Java中字符串相加和字符串常量相加區別(轉)


public class Test {  
    public static void main(String[] args) {  
    String str="abc";
    String str1 = "a";  
         String str2 = "bc";  
         String combo1 = "a" + "bc";  //第一種情況
         String combo2=str1+str2;   //第二種情況
         System.out.println(str==combo1);
         System.out.println(str==combo2);
         System.out.println(combo1==combo2);
        
    }  
} 

輸出:
true
false
false

第一種情況:至今在常量池中相加,及還是在棧區中進行

第二種情況:對於上述情況,若str1,str2采用String定義,拼接時需要額外創建一個StringBuffer(或StringBuilder,combo2就是新建的StringBuilder

),之后將StringBuffer轉換為String,在此處new了一個對象,因此實在堆區中進行的

因此答案就很清楚了,一個在棧區一個堆區,最后結果不可能一樣

還有記住一點:String是一個常量,一旦初始化,不會再改變。

轉自:http://blog.csdn.net/u013047660/article/details/20771709


免責聲明!

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



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