型キャストと型変換の違い
コンテンツ
型変換と型キャストの基本的な違い、つまり型変換はコンパイラによって「自動的に」行われますが、型キャストはプログラマによって「明示的に行われる」必要があります。
「型キャスト」と「型変換」という2つの用語は、あるデータ型を別のデータ型に変換する必要がある場合に発生します。 2つの型が相互に互換性がある場合、一方の型から他方の型への変換はコンパイラーによって自動的に行われます。比較チャートを使用して、型キャストと変換の違いを説明しましょう。
- 比較表
- 定義
- 主な違い
- 結論
比較表:
比較の根拠 | 型鋳造 | 型変換 |
---|---|---|
意味 | 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つのデータ型を別のデータ型に変換する際、宛先の型はソースの型よりも大きい場合も小さい場合もあります。反対に、タイプ変換では、宛先タイプはソースタイプより大きくなければなりません。
- ある型から別の型への変換は、型キャストでコーディングしている間に行われます。対照的に、型変換では、コンパイル中に1つの型から別の型への変換が明示的に行われます。
- 型キャストは、変換先タイプがソースタイプよりも小さい場合があるため、ナローイング変換と呼ばれます。これとは異なり、型変換は拡大変換と呼ばれます。これは、ここでは、変換先の型が変換元の型よりも大きくなければならないためです。
結論:
型変換と型キャストは両方とも、あるデータ型を別のデータ型に変換するタスクを実行しますが、キャスト演算子() 'を使用して型キャストがプログラマによって行われ、型変換がコンパイラによって行われるという意味で異なります、および演算子を使用しません。