1

Javaオブジェクトをどの方法に変換するStringことをお勧めしますか?またその理由は?
たとえば、次のものがあるとします。

StringBuilder sb = new StringBuilder();

2 つの方法で変換できStringます。初め:

sb.toString();

2番:

sb + "";
4

4 に答える 4

7

最初の方法は、より一般的に使用され、より効率的であるため、推奨されます。

String が空でない場合にのみ 2 番目を使用します (その場合は、StringBuilder に追加する必要があります)。

2 番目の例は、

new StringBuilder().append(sb.toString()).append("").toString();

技術的にはこれを行います。

new StringBuilder().append(String.valueOf(sb)).append("").toString();

違いは、NPE ではなく String.valueOf(null) => "null" であるということです。

于 2013-01-07T15:24:17.433 に答える
5

との主な違いはsomeObject.toString()someObject + ""someObject が null の場合です。前者は NullPointerException をスローしますが、後者はスローしません (「null」を返します)。

オブジェクトが null でないことが予想される場合は、次のようになります。

String s = someObject.toString();

不要な連結を保存します (コンパイラによって削除される場合とされない場合があります)。

ただし、オブジェクトが null になる可能性があり、それが許容値である場合は、次のようにします。

String.valueOf(someObject);

この例では、someObjectが null の場合、"null" を返し、例外をスローしません。

于 2013-01-07T15:24:10.333 に答える
1

@Peter Lawreyが述べたように、最初のものはStringBuilderでより一般的に使用されます。ただし、文字列にキャストする場合は、次のことを行う方がよい場合があります...

(String) myVariable;

それよりも...

myVariable.toString();

この理由は、2番目がnullポインタ例外をスローする可能性があるためです。

于 2013-01-07T15:27:37.607 に答える
1

3 番目の可能性があります。

    Objects.toString(Object o, String nullDefault)

最初の引数が の場合は 2 番目の引数が返されnull、それ以外の
場合o.toString()は が返されます。

(Objects.toString(Object o)と同じものを返すもありますString.valueOf)

于 2013-01-07T15:35:39.997 に答える