文字列連結を実行しています。 st
の値は"56.0"
であり、それとint
の連結を実行しており、結果は"56.03"
です。
文字列連結+
演算子は、JLS 15.18.1で記述されています。
オペランド式がString型の場合は、実行時に文字列変換(5.1.1)が実行され、他のオペランドが文字列を生成します。
そしてJLS 5.1.11含む:
の値プリミティブ型TのX最初に適切なクラスインスタンス生成式(15.9)への引数として与えているかのように基準値に変換されます。
[...] T
はbyte
、short
、またはint
であれば、new Integer(x)
を使用しています。
[...]そうでない場合、変換は、引数なしで参照オブジェクトのメソッドtoString
の呼び出しによって行われます。 toString
メソッドを呼び出した結果がnull
の場合は、代わりに文字列"null"
が使用されます。言い換えれば
、この場合、あなたのプログラムは、基本的には、次のとおりです。
double db = 56.00;
String st = String.valueOf(db); // "56.0"
System.out.print(st + new Integer(3).toString()); // "56.0" + "3" = "56.03"
コンパイラの変更 'System.out.print(ST + 3);' 'System.out.print(新しいのStringBuilderへ(st).append(3)); 'あなたの出力。 –
「56.00」は「56.0」と表されます。意味のある数字のコンセプトは存在しません。それは、それが分数であるという概念だけです(「ダブル」のため)。 –