2013-07-09 64 views
-2

question- 其中下面的字符串在字符串池中的concatinating之後佔用內存以及將會回答什麼以及爲什麼?這些字符串連接會發生什麼?

public class Test1234 { 
    public static void main(String[] args) { 
     final String s1="jlc"; 
     final String s2="india"; 
     String s3=s1+s2; String s4="jlcindia"; 
     System.out.println(s3==s4); 
    } 
} 
+2

這個問題似乎是無關緊要的,因爲你沒有表現出解決問題的任何努力。 – jlordo

+1

你***想什麼?爲什麼? –

+0

據我所知字符串連接在編譯時完成的... – FazoM

回答

1

它將打印true因爲s1s2是字符串和聲明final,所以s3 = s1 + s2被視爲一個常數,在編譯時解決。因此,s3s4將引用字符串池中的相同字符串。

如果刪除了那些final關鍵字,它會打印false

+0

公共類Test1234 { \t \t公共靜態無效的主要(字串[] args){ \t \t \t字符串S1 = 「JLC」; \t \t String s2 =「india」; \t \t \t final String s3 = s1 + s2; \t \t \t String s4 =「jlcindia」; \t \t \t System.out.println(s3 == s4); \t \t \t \t \t}} 在這種情況下,我們concatanating投入最後的字符串變量所以S3應該有恆定的值並駐留在一個字符串池,但在這個比較S3和S4會給出錯誤的,爲什麼??? ? – user2564712

+0

@ user2564712由於's1'和's2'不是'final',所以's3'在編譯時沒有被解析。 – arshajii

相關問題