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