4

重複の可能性:
Javaの「newString(…)」という表現の目的は何ですか?

String s = new String("Hello World")ほとんどの場合不要な「HelloWorld」用の余分なスペースが作成されるため、これは避ける必要があることを私は知っています。

なぜString s = new String("Hello World")避けるべきかを説明する関連する質問はここにあります:

"text"とnewString( "text")の違いは何ですか?

String s = new String("Hello World")しかし、いつではなく、を使用する必要がありString s = "Hello World"ますか?これは私が経験したインタビューの質問です。

ほとんどの場合String s = new String("Hello World")回避する必要があるのなら、なぜJavaはそれを許可するのでしょうか。

4

1 に答える 1

1

1) 文字列 s = "テキスト"; この構文は、ヒープ内の「テキスト」にメモリを割り当てます。この「テキスト」を他の変数に割り当てるたびに、毎回同じメモリ参照が返されます。経験値用 -

   String aa = "text";
   String bb = "text";

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }

印刷します - はい

しかし
String s = new String("text"); 常にメモリ内に新しい場所を作成し、毎回新しい参照を返します。経験値用 -

   String aa = new String ("text");
   String bb = new String ("text");

   if(aa == bb){
       System.out.println("yes");
   } else {
       System.out.println("No");
   }

印刷されます - いいえ

于 2012-05-31T08:20:02.140 に答える