この2つの違いは何ですか?
int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));
ありがとう!
この2つの違いは何ですか?
int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));
ありがとう!
2つの違い:
あなたの例は、にa.ToString修正されたとしても、はオブジェクトではなく、であり、したがってメソッドがないため、機能a.toString()しません。あなたは書く必要があるでしょう。一方、呼び出しはそれを自動ボックス化するので、があります。aintnew Integer(a).toString()String.valueOftoString
aオブジェクト参照の場合、違いは、ifが(その後自動ボックス化されるのと同様に、明らかにあなたの場合にはありません)をString.valueOf(a)与えるのに対し、をスローすることです。"null"anullainta.toString()NullPointerException
String.valueOfこれは、JDKで利用可能なのソースコードで確認できます。
public static String valueOf(Object obj) {
return (obj == null) ? "null" : obj.toString();
}
つまり、を使用String.valueOfすると、プリミティブは自動ボックス化され、オブジェクト参照はnull保護されます。
String.valueOf変換に使用できますtoStringが、標準関数と同様に、すべてのオブジェクトが上書きするか、Objectクラスから継承してそれ自体を文字列化します。