1 最近幾個同學面試的時候出現了這樣一個問題
剛聽到這個題目的時候的確是不知所措:
經過網上的查找和自己的理解來解釋一下這個題目的答案
答案是:2
為什么呢???
1 實現我們都知道創建實例有兩種方法
(1)一是用new來創建
(2)二是同過放射實例來創建,(classs.newInstances)
所以這就很好的解釋了一種情況了
第二
對於String 類型的還有一種文本創建方式,就是下面我所說的這種
String a="abc";
因為String 是一個final類,JVM虛擬機在他的底層是通過一個字符串池來進行判斷的,如果底層沒有則創建,如果有則不在創建
同時這種創建方式還有一個特別的地方,
String a="bc" 是創建了一次
String a="ab"+"cd";
由於常量的值在編譯的時候就被確定了。在這里,"ab"和"cd"都是常量,因此變量a的值在
編譯時就可以確定。這行代碼編譯后的效果等同於:
Java代碼
String a="abcd";
因此這里只創建了一個對象"abcd",並且它被保存在字符串池里了。
String s = new String ("ab")+"c"創建了幾個對象
創建了2個對象,new string(“ab”)將創建一個string對象;
String s 將創建第2個string對象。
“c”是常量在編譯的時候就已經作為常量賦值了,不會創建新的對象。
故共2個。