-1

この2つの違いは何ですか?

int a=20;
System.out.print(a.toString);
System.out.print(String.valueOf(a));

ありがとう!

4

2 に答える 2

3

2つの違い:

  1. あなたの例は、にa.ToString修正されたとしても、はオブジェクトではなく、であり、したがってメソッドがないため、機能a.toString()しません。あなたは書く必要があるでしょう。一方、呼び出しはそれを自動ボックス化するので、があります。aintnew Integer(a).toString()String.valueOftoString

  2. 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保護されます。

于 2013-02-16T12:21:40.613 に答える
2

String.valueOf変換に使用できますtoStringが、標準関数と同様に、すべてのオブジェクトが上書きするか、Objectクラスから継承してそれ自体を文字列化します。

于 2013-02-16T12:23:54.927 に答える