Java で Integer、Double を String に変換するには、次のどの方法が適していますか。
String.valueOf(doubleVal)
doubleVal + ""
doubleVal.toString()
ありがとう。
Java で Integer、Double を String に変換するには、次のどの方法が適していますか。
String.valueOf(doubleVal)
doubleVal + ""
doubleVal.toString()
ありがとう。
doubleVal + ""
空の文字列との連結を行う必要があるため、おそらく最悪です。ただし、他の2つは同等です。OpenJDKのソースコード:
// java.lang.String
public static String valueOf(double d) {
return Double.toString(d);
}
// java.lang.Double
public static String toString(double d) {
return new FloatingDecimal(d).toJavaFormatString();
}
パフォーマンスの違いはないと思います。最も読みやすいものを探してください!
最初のものはdoublevar.toString()とまったく同じです(javadocを確認してください)。2つ目は、長い文字列を連結するのに適しています。
数値が文字列として表される方法をフォーマットする必要がある場合は、とにかく他のクラスを調べる必要があります
公式ソースから:
public static String valueOf(double d) {
return Double.toString(d);
}
したがって、1番目と3番目は、そうでない限り、実際には違いdoubleVal
はdouble
ありませんDouble
。これは、の場合はDouble
、
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
2つ目は、連結する必要があるため、確かに悪化します。
結論:
質問に続いて、最も効率的な方法はメソッドを呼び出すことであると想定する必要がありtoString()
ます。
1番目と3番目は良いですが、2番目は悪いです。
2番目が悪い理由は、コードが実行したいことを示していないためです。コードは、実際には連結の前に行われる変換のみが必要な場合に、値を空の文字列と連結することを示しています。
を使用することを好みInteger.toString(int)
ます。 を使用するString.valueOf(int)
と、内部的に呼び出されますInteger.toString(int)
(long、float、および double と同じ)。しかし、読みやすさのために、使用する方が良いでしょうString.valueOf()
double
プリミティブ型を使用しているか、そのオブジェクト ラッパーを使用しているかによって、意味が若干異なりますDouble
。
プリミティブで機能するものはすべて、double
ラップされたオブジェクトでも機能しますDouble
が、その逆は機能しません。(つまり、パラメーターの型が の場合、プリミティブ double は受け入れられませんDouble
。)
また、Double
型の値は null の場合がありますが、プリミティブdouble
型はできません。
それを超えると、まったく大きな違いはありません。あなたが提供したコード スニペットについては、実際に話す価値はありません。
i) String.valueOf(int i) ii) Integer.toString(int i)
これらのメソッドの実装を調べたところ、最初のメソッドが 2 番目のメソッドを呼び出していることがわかりました。結果として、String.valueOf(int i) へのすべての呼び出しには、Integer.toString(int i) を直接呼び出すよりも 1 つ多くの呼び出しが含まれます。
同じことを行う2つの異なる方法
String 型には、いくつかのメソッド valueOf があります
static String valueOf(boolean b)
static String valueOf(char c)
static String valueOf(char[] data)
static String valueOf(char[] data, int offset, int count)
static String valueOf(double d)
static String valueOf(float f)
static String valueOf(int i)
static String valueOf(long l)
static String valueOf(Object obj)
ご覧のとおり、これらのメソッドはあらゆる種類の数値を解決できます
あなたが提示したような特定のメソッドのすべての実装:ダブルの場合
Double.toString(dobule d)
等々
私の意見では、これは歴史的なことではありませんが、操作対象の型を変更したい場合に行う変更が少ないため、適切な型からよりも String クラスからメソッド valueOf を使用する方が開発者にとってより便利です。
サンプル 1:
public String doStaff(int num) {
//Do something with num
return String.valueOf(num);
}
サンプル 2:
public String doStaff(int num) {
//Do somenthing with num
return Integer.toString(num);
}
サンプル 2 に見られるように、サンプル 1 とは対照的に、2 つの変更を行う必要があります。
私の結論は、String クラスの valueOf メソッドを使用する方がより柔軟であり、その理由がそこにあるということです。