java - for循环造对象,造了很多重复的s对象,为什么不报错?
大家讲道理
大家讲道理 2017-04-18 09:51:15
0
7
551

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回覆(7)
迷茫

雷雷

刘奇
  1. 首先s是int類型,屬於基本類型,不是Object類型,因此不存在「創建很多重複的s物件」之說

  2. 這裡創建的是int型別的變量,這個變數是存在堆疊裡的

  3. 即使你把循環次數設定成Integer.MAX_VALUE,也不會報錯,具體原因不知道,不過編譯器會優化程式碼,使得實際上每次使用的都是同一塊記憶體區域,而不是每次都開闢一個新的記憶體區

小葫芦

你可以試試Integer 哈哈

阿神

1、首先你要理解的是這裡並沒有一個名叫s的對象,代碼中的s,以及i,只不過是對象的引用,相當於C語言中的指針,它只是指向這個對象空間的一個標誌。
2、你的每次的for循環,都在聲明一個同名的引用,那麼這時候編譯器是能夠分辨出來這些同名的引用的,所以無論循環多少次,實際上你只擁有一個名叫's '的引用。而且它初始化在第一次for循環,以後的每次循環都是在給這個同名的引用賦值。
3、如果想看列印結果,把system.out放到局部變數的有效域內。

Peter_Zhu

1.這段程式碼沒造對象,int是基本資料型,不是對象。
2.這段程式碼會被編譯器最佳化,結果我猜可能是 int s = 9;這樣的形式,你可以javap看看

刘奇

因為你用的是java編譯器。

刘奇

int何來的對象,只不過不斷改變棧的值而已

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板