1

Java で Integer、Double を String に変換するには、次のどの方法が適していますか。

String.valueOf(doubleVal)
doubleVal + ""
doubleVal.toString()

ありがとう。

4

9 に答える 9

8

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();
}
于 2012-06-11T08:39:29.773 に答える
3

パフォーマンスの違いはないと思います。最も読みやすいものを探してください!

最初のものはdoublevar.toString()とまったく同じです(javadocを確認してください)。2つ目は、長い文字列を連結するのに適しています。

数値が文字列として表される方法をフォーマットする必要がある場合は、とにかく他のクラスを調べる必要があります

于 2012-06-11T08:37:33.343 に答える
0

公式ソースから:

public static String valueOf(double d) {
    return Double.toString(d);
}

したがって、1番目と3番目は、そうでない限り、実際には違いdoubleValdoubleありませんDouble。これは、の場合はDouble

public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}

2つ目は、連結する必要があるため、確かに悪化します。

結論:

質問に続いて、最も効率的な方法はメソッドを呼び出すことであると想定する必要がありtoString()ます。

于 2012-06-11T08:40:14.887 に答える
0

1番目と3番目は良いですが、2番目は悪いです。

2番目が悪い理由は、コードが実行したいことを示していないためです。コードは、実際には連結の前に行われる変換のみが必要な場合に、値を空の文字列と連結することを示しています。

于 2012-06-11T08:40:21.833 に答える
0

を使用することを好みInteger.toString(int)ます。 を使用するString.valueOf(int)と、内部的に呼び出されますInteger.toString(int)(long、float、および double と同じ)。しかし、読みやすさのために、使用する方が良いでしょうString.valueOf()

于 2012-06-11T08:40:51.227 に答える
0

doubleプリミティブ型を使用しているか、そのオブジェクト ラッパーを使用しているかによって、意味が若干異なりますDouble

プリミティブで機能するものはすべて、doubleラップされたオブジェクトでも機能しますDoubleが、その逆は機能しません。(つまり、パラメーターの型が の場合、プリミティブ double は受け入れられませんDouble。)

また、Double型の値は null の場合がありますが、プリミティブdouble型はできません。

それを超えると、まったく大きな違いはありません。あなたが提供したコード スニペットについては、実際に話す価値はありません。

于 2012-06-11T08:41:58.997 に答える
0

i) String.valueOf(int i) ii) Integer.toString(int i)

これらのメソッドの実装を調べたところ、最初のメソッドが 2 番目のメソッドを呼び出していることがわかりました。結果として、String.valueOf(int i) へのすべての呼び出しには、Integer.toString(int i) を直接呼び出すよりも 1 つ多くの呼び出しが含まれます。

同じことを行う2つの異なる方法

于 2012-06-11T08:44:46.757 に答える
0

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 メソッドを使用する方がより柔軟であり、その理由がそこにあるということです。

于 2012-06-11T08:52:56.427 に答える