下邊這條語句一共創建了多少個對象;

String ="a"+"b"+"c"+"d";

答:對於如下代碼:

String s1="a";

String s2=s1+"b";

String s3="a"+"b";

System.out.println(s2=="ab");

System.out.println(s3=="ab");

第一條語句打印的結果爲false,第二條語句打印的結果爲true,這說明javac編譯可以對字符串常量直接的相加的表達式進行優化,不必要等到運行期去進行加法運算處理,而是在編譯時候去掉其中的加號,

直接將其編譯成一個這些常量相連的結果。

題目中的第一行代碼被編譯器在編譯時優化後,相當於直接定義了一個”abcd”的字符串,所以,上面的代碼應該只創建了一個String對象。寫如下兩行代碼,

             String s = "a" +"b" + "c" + "d";

             System.out.println(s =="abcd");

最終打印的結果應該爲true。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章