現在的位置: 首頁 > 綜合 > 正文

String是否相等的幾種情況

2014年10月30日 ⁄ 綜合 ⁄ 共 517字 ⁄ 字型大小 評論關閉

String相關操作:

String  s1 = 「1」;

String  s2 = 「1」;

此時s1,s2是同一個對象(s1 == s2 為true)。String是final的,」1」生成之後是不會在改變的,s1,s2都是」1」的引用。

String s1 = new String(「1」);

String s2 = new String(「2」);

此時s1,s2不是同一個對象,他們括弧中的」1」都是指的同一個對象。這相當於根據」1」生成的兩個String對象,不是同一個對象。

String s1 = 「a」; String s2 = 「b」;

String s3 = s1 + s2;

String s4 = s1 + s2;

此時s3 和s4不是同一個對象。分別由s1 和s2拼接成的新字元串對象。

String s1 = 「a」;

String s2 = 「b」;

String s3 = 「a」 + 「b」;

String s4 = 「a」 + 「b」:

String s5 = s1 + 「b」;

此時s3 和s4是同一個對象。編譯器發現」a」和」b」都是常量會幫我們優化成String s3 = 「ab」 String s4 = 「ab」,此時還沒有編譯成位元組碼,所以他們是同一個對象。而s3 跟s5就不是同一個對象了,s5中s1是變數,並不是常量,編譯器不會幫我們優化。

抱歉!評論已關閉.