String s = new String("aa") 創建了幾個對象?


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個。

 


免責聲明!

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



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