String s="a"+"b"+"c"+"d";創建了幾個對象?


對於如下代碼:

package reviewTest;

/**
 * @ClassName: StringTest
 * @Description: 測試String的字符串相加優化
 * @author Kingram
 * @date 2018年7月27日
 *
 */
public class StringTest {

    public static void main(String[] args) {
String s1
= "a"; String s2 = s1 + "b"; String s3 = "a" + "b"; System.out.println(s2 == "ab"); System.out.println(s3 == "ab"); String s = "a" + "b" + "c" + "d"; System.out.println(s == "abcd"); } }

第一條語句打印的結果為false,第二條語句打印的結果為true,

說明javac編譯可以對字符串常量直接相加的表達式進行優化,不必要等到運行期再去進行加法運算處理,而是在編譯時去掉其中的加號,直接將其編譯成一個這些常量相連的結果。

題目中的代碼被編譯器在編譯時優化后,相當於直接定義了一個”abcd”的字符串,所以,題目答案應該只創建了一個String對象。

程序最后一條打印語句的結果應該為true。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM