型キャストと型変換の違い

著者: Laura McKinney
作成日: 1 4月 2021
更新日: 4 5月 2024
Anonim
型変換できる条件、自動とキャストの違いとその理由【Java入門講座】4-6 参照型の型変換
ビデオ: 型変換できる条件、自動とキャストの違いとその理由【Java入門講座】4-6 参照型の型変換

コンテンツ


型変換と型キャストの基本的な違い、つまり型変換はコンパイラによって「自動的に」行われますが、型キャストはプログラマによって「明示的に行われる」必要があります。

「型キャスト」と「型変換」という2つの用語は、あるデータ型を別のデータ型に変換する必要がある場合に発生します。 2つの型が相互に互換性がある場合、一方の型から他方の型への変換はコンパイラーによって自動的に行われます。比較チャートを使用して、型キャストと変換の違いを説明しましょう。

  1. 比較表
  2. 定義
  3. 主な違い
  4. 結論

比較表:

比較の根拠型鋳造型変換
意味1つのデータ型は、キャスト演算子を使用してユーザーによって別のデータ型に割り当てられ、「型キャスト」と呼ばれます。コンパイラによって自動的に1つのデータ型を別のデータ型に変換することを「型変換」と呼びます。
適用済み型キャストは、互換性のない2つのデータ型にも適用できます。型変換は、2つのデータ型に互換性がある場合にのみ実装できます。
オペレーターデータ型を別の型にキャストするには、キャスト演算子()が必要です。オペレーターは不要です。
データ型のサイズ宛先タイプは、ソースタイプより小さくすることができます。ここで、宛先タイプはソースタイプより大きくなければなりません。
実装済みプログラムの設計中に行われます。コンパイル中に明示的に行われます。
変換タイプ

縮小変換。拡大変換。
int a;
バイトb;
...
...
b =(バイト)a;
int a = 3;
フロートb;
b = a; // b = 3.000の値。


型キャストの定義

タイプキャスト プログラム設計時に、プログラマーによって、あるデータ型から別のデータ型へのキャストとして定義できます。あるデータ型から別のデータ型への自動変換は常に可能ではありません。 「宛先タイプ」が「ソースタイプ」よりも小さいことが条件である可能性があります。したがって、プログラマは、キャスト演算子「()」を使用して、大きいデータ型を小さいデータ型に明示的にキャストする必要があります。大きいデータ型は小さいデータ型に変調されるため、「縮小変換」とも呼ばれます。

宣言:

destination_type =(target_type)variable / value //ターゲットタイプは、ソースタイプを変換するタイプであり、常にターゲットタイプです。

例で理解しましょう。データ型「int」を「byte」に変換します。現在、「byte」は「int」よりも小さいため、型変換は許可されていません。ここでは、キャスト演算子「()」を使用して、暗黙的に「int」を「byte」に変換する必要がありました。 「int」は「byte」よりも大きいため、「int」のサイズは「int mod byte」の範囲に縮小されます。

int a;バイトb; ... ... b =(byte)a;

「float」が「int」に変換されると、「int」には小数値が保存されないため、floatのサイズが切り捨てられます。宛先タイプのサイズが小さすぎてソースタイプが収まらない場合、ソースタイプはモジュロ宛先タイプ「範囲」です。データ型に互換性がある場合にも、キャストを適用できます。型変換が必要な場合は常に、型キャストを使用することをお勧めします。

型変換の定義

型変換 必要に応じて、あるデータ型から別のデータ型に自動的に変換され、コンパイラーによって明示的に行われます。ただし、型変換の前に満たすべき2つの条件があります。


  • 発信元と宛先のタイプには互換性が必要です。
  • 宛先タイプは、ソースタイプより大きくする必要があります。

これら2つの条件は、型変換を実現するために満たす必要があります。この種の変換は「拡大変換」と呼ばれ、小さい型は大きい型に変換されるため、型の拡大が発生しますこの拡大変換では、「int」、「float」などの数値タイプは相互に互換性がありますが、数値と文字、ブール値、または文字とブール値は互換性がありません。

この例は、これについてのより良い見方を提供します

int a = 3;フロートb; b = a; // b = 3.000の値。

ここで、「int」は「int」よりも大きい「float」に変換されるため、ソースタイプの拡大が発生します。ここでは、コンパイラが明示的に行うため、キャスト演算子は不要です。

  1. 型キャストと型変換を区別する基本的な違いは、型キャストがプログラマーによって行われる1つの型から別の型への変換であることです。一方、型変換とは、コンパイル中にコンパイラーによって行われる、ある型から別の型への変換です。
  2. 型キャストはデータ型に適用できますが、互いに互換性がない場合があります。逆に、型変換は相互に互換性のあるデータ型にのみ適用できます。
  3. 型キャストでのある型から別の型への変換にはキャスト演算子「()」が必要ですが、型変換でのあるデータ型から別のデータ型への変換には演算子は必要ありません。
  4. 型キャストで1つのデータ型を別のデータ型に変換する際、宛先の型はソースの型よりも大きい場合も小さい場合もあります。反対に、タイプ変換では、宛先タイプはソースタイプより大きくなければなりません。
  5. ある型から別の型への変換は、型キャストでコーディングしている間に行われます。対照的に、型変換では、コンパイル中に1つの型から別の型への変換が明示的に行われます。
  6. 型キャストは、変換先タイプがソースタイプよりも小さい場合があるため、ナローイング変換と呼ばれます。これとは異なり、型変換は拡大変換と呼ばれます。これは、ここでは、変換先の型が変換元の型よりも大きくなければならないためです。

結論:

型変換と型キャストは両方とも、あるデータ型を別のデータ型に変換するタスクを実行しますが、キャスト演算子() 'を使用して型キャストがプログラマによって行われ、型変換がコンパイラによって行われるという意味で異なります、および演算子を使用しません。