面接問題-String s=「a」+「b」+「c」+「d」;

676 ワード

Androidプログラマー面接宝典
答え:次のコードについて:
String s1 = "a";
String s2 = s1 + "b";
String s3 = "a" + "b";
System.out.println(s2 == "ab");
System.out.println(s3 == "ab");

1番目の文の印刷結果はfalse、2番目の文の印刷結果はtrueであり、javacコンパイルは文字列定数を直接加算する式を最適化することができ、実行期間まで加算処理を行う必要はなく、コンパイル時に加算番号を削除し、これらの定数に接続された結果に直接コンパイルすることができることを示しています.
タイトルの最初の行のコードはコンパイラによってコンパイル時に最適化され、「abcd」の文字列を直接定義することに相当するので、上のコードはStringオブジェクトを1つしか作成しないはずです.次の2行のコードを書きます.
        String s = "a" + "b" + "c" + "d";
        System.out.println(s == "abcd");

最終印刷の結果はtrueになるはずです.