時々javaは私を困惑させます。
実行するintの初期化が大量にあります。
何本当の違いは?
Integer.toString(i)
new Integer(i).toString()
"" + 42
中間体StringBuilder
を必要とするため、それ以上のことはありませんInteger
。
"" + 42
整数の文字列を追加する場合、結果的に値を追加してしまい、実現しない場合があるため、お勧めしません。
時々javaは私を困惑させます。
実行するintの初期化が大量にあります。
何本当の違いは?
Integer.toString(i)
new Integer(i).toString()
"" + 42
中間体StringBuilder
を必要とするため、それ以上のことはありませんInteger
。
"" + 42
整数の文字列を追加する場合、結果的に値を追加してしまい、実現しない場合があるため、お勧めしません。
回答:
Integer.toString
クラスの静的メソッドを呼び出しますInteger
。のインスタンスは必要ありませんInteger
。
を呼び出すと、intの値をカプセル化する完全なJavaオブジェクトnew Integer(i)
であるタイプのインスタンスを作成しますInteger
。次に、そのtoString
メソッドを呼び出して、それ自体の文字列表現を返すように要求します。
必要なのがを印刷するint
ことだけである場合は、最初の1つを使用します。これは軽量で高速であり、(返される文字列を除いて)追加のメモリを使用しないためです。
整数値を表すオブジェクト(たとえば、コレクション内に配置する)が必要な場合は、2番目のオブジェクトを使用しますint
。これは、裸のオブジェクトでは実行できないあらゆる種類のことを実行する本格的なオブジェクトを提供するためです。
別のオプションは静的String.valueOf
メソッドです。
String.valueOf(i)
それはInteger.toString(i)
私よりも少し正しいと感じています。iのタイプが、たとえばからint
に変わっても、double
コードは正しいままです。
私も使用することを強くお勧めします
int integer = 42;
String string = integer + "";
シンプルで効果的。
Integer.toString()
は、追加のキーストロークを使用する場合がありますが、はるかに明確です。これは、コードを保守する場合に重要です。
toString()
メソッドを自動的に呼び出しませんか?
パフォーマンス測定に関して、時間パフォーマンスを検討している場合は、Integer.toString(i); 呼び出し回数が1億回未満の場合は高価です。それ以外の場合は、1億回を超える呼び出しが行われると、新しいInteger(10).toString()のパフォーマンスが向上します。
以下は、uを介してパフォーマンスを測定しようとするコードです。
public static void main(String args[]) {
int MAX_ITERATION = 10000000;
long starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s = Integer.toString(10);
}
long endtime = System.currentTimeMillis();
System.out.println("diff1: " + (endtime-starttime));
starttime = System.currentTimeMillis();
for (int i = 0; i < MAX_ITERATION; ++i) {
String s1 = new Integer(10).toString();
}
endtime = System.currentTimeMillis();
System.out.println("diff2: " + (endtime-starttime));
}
メモリに関しては、
新しいInteger(i).toString();
毎回オブジェクトを作成するため、より多くのメモリを必要とするため、メモリの断片化が発生します。
new Integer(10).toString() can be simplified to Integer.toString(10)
"
より良い:
Integer.valueOf(i).toString()
1。Integer.toString(i)
Integer i = new Integer(8);
// returns a string representation of the specified integer with radix 8
String retval = i.toString(516, 8);
System.out.println("Value = " + retval);
2。new Integer(i).toString()
int i = 506;
String str = new Integer(i).toString();
System.out.println(str + " : " + new Integer(i).toString().getClass());////506 : class java.lang.String
"" + 42
が、ちょっと、それは私です。フォーム#2は、中間として新しい整数オブジェクト(iのほとんどの値)になります。また、よりタイピングです。