Javaでは、変数の定義からコピー、数値変数の計算、メソッドのパラメーター転送、ベースクラスと派生クラス間のモデリングなど、タイプ変換が遭遇することがよくあります。タイプ変換はどこでも見ることができます。 Javaのタイプ変換は、Javaエンコーディングで重要な役割を果たします。
変数を定義する際に注意を払うべき多くの問題があります。注意しないと、精度または互換性のないタイプが失われます。
例えば:
1.長い整数データを定義する場合、接尾辞LまたはLを追加する必要があります。
LONG L = 123456789012345L
2。単一の精密タイプ(7-8ビットの大幅な数字)を定義する場合、接尾辞FまたはFを追加する必要があります。
フロートf = 12.5f
3.ブール型は他のデータ型に変換することはできません。
その中でも、データ型の変換の問題が発生することがよくあります。最も一般的なものは、暗黙的な変換とキャスト変換です。分析しましょう。
暗黙的な変換
特徴:
小さいものから大規模に変換すると暗黙的に変換でき、データ型は自動的に改善されます。
バイト、ショート、char-> int-> long-> float-> double
注:長いは8バイトで、フロートは4バイトです。
ロングは整数であり、フロートはフローティングポイントタイプです。整数と浮動小数点数のストレージルールは異なります。長い範囲はフロートよりも小さいことを忘れないでください。
例:
バイトa = 10;
int b = a;
intb = aがコンパイルされると、aは暗黙的にintタイプに変換されます。
ケース
特徴:
大部分から小さい(このデータ型でデータを表すことができることを明確に知っている場合は、キャストを使用できます)
形式:
(変換されたデータ型)変数または値。
注:一般的に、キャストはまったく推奨されません。
例1:
int a = 10; byte b =(byte)a;
バイトb =(byte)aがコンパイルされると、aはバイトタイプにキャストされます。
例2:
class qiangzhidemo {public static void main(string [] args){byte b =(byte)130; System.out.println(b); // result-126を印刷}}分析:
データ130デフォルトは、intタイプの10進数データです。
ステップ1:10進数130をバイナリデータに変換します。
10000010
ステップ2:メモリ内の130の表現は次のとおりです
元のコード:000000000000000000000 000000000000010
ステップ3:INT130の補数コードを見つけます
130は正の数であるため、逆コードと補完コードは元のコードと一致しています。
補完コード:000000000000000000000000000000000000000010
ステップ4:補数コードをインターセプトし、最後の8桁のみを残します。
(BYTE)130の補数コードは10000010です
ステップ5:この補数を元のコードに変換します。
サインビット(最初のビット)は1であるため、数は負の数です。
逆コード:10000001(補完コード1)
元のコード:111111110(シンボルビットは変更されておらず、データビットは反転します)
小数点に-126に変換するため、最後に-126を印刷します。
例3:
ショーツ= 1; s = s +1;
そして
ショーツ= 1; s+= 1;
問題はありますか?なぜ?
分析:
最初のプログラムはエラーを報告します:エラー:互換性のないタイプ:INTから短いものに変換すると損失が発生する可能性があります
原因:s = s+1; s+1は、暗黙的にintタイプに変換されます。 INTタイプが短いタイプに割り当てられている場合、失われる可能性があります。
2番目のプログラムをコンパイルして実行できます。
理由:S+= 1、S = S+1と見なすことができますが、依然として違いがあります。 s+= 1、つまりs =(short)(s+1)にキャストがあり、s+1の値を短いタイプに強制するため、エラーはありません。
まとめ:
一部のミニプログラムでデータ型変換の問題が発生した場合、一目で確認できる場合があります。ただし、巨大なシステムを作成し、膨大なデータを持っている場合、これらの小さな問題はシステムエラーやクラッシュさえ引き起こす可能性があるため、初期のコードライティングの厳格さを把握する必要があります。
上記のコンテンツでは、Java Basic Implict Conversion vs Cast Conversionを紹介します。気に入っていただければ幸いです。