光阴似箭催人老,日月如移越少年。
雷雷
首先s是int類型,屬於基本類型,不是Object類型,因此不存在「創建很多重複的s物件」之說
這裡創建的是int型別的變量,這個變數是存在堆疊裡的
即使你把循環次數設定成Integer.MAX_VALUE,也不會報錯,具體原因不知道,不過編譯器會優化程式碼,使得實際上每次使用的都是同一塊記憶體區域,而不是每次都開闢一個新的記憶體區
你可以試試Integer 哈哈
1、首先你要理解的是這裡並沒有一個名叫s的對象,代碼中的s,以及i,只不過是對象的引用,相當於C語言中的指針,它只是指向這個對象空間的一個標誌。 2、你的每次的for循環,都在聲明一個同名的引用,那麼這時候編譯器是能夠分辨出來這些同名的引用的,所以無論循環多少次,實際上你只擁有一個名叫's '的引用。而且它初始化在第一次for循環,以後的每次循環都是在給這個同名的引用賦值。 3、如果想看列印結果,把system.out放到局部變數的有效域內。
1.這段程式碼沒造對象,int是基本資料型,不是對象。 2.這段程式碼會被編譯器最佳化,結果我猜可能是 int s = 9;這樣的形式,你可以javap看看
int s = 9;
因為你用的是java編譯器。
int何來的對象,只不過不斷改變棧的值而已
雷雷
首先s是int類型,屬於基本類型,不是Object類型,因此不存在「創建很多重複的s物件」之說
這裡創建的是int型別的變量,這個變數是存在堆疊裡的
即使你把循環次數設定成Integer.MAX_VALUE,也不會報錯,具體原因不知道,不過編譯器會優化程式碼,使得實際上每次使用的都是同一塊記憶體區域,而不是每次都開闢一個新的記憶體區
你可以試試Integer 哈哈
1、首先你要理解的是這裡並沒有一個名叫s的對象,代碼中的s,以及i,只不過是對象的引用,相當於C語言中的指針,它只是指向這個對象空間的一個標誌。
2、你的每次的for循環,都在聲明一個同名的引用,那麼這時候編譯器是能夠分辨出來這些同名的引用的,所以無論循環多少次,實際上你只擁有一個名叫's '的引用。而且它初始化在第一次for循環,以後的每次循環都是在給這個同名的引用賦值。
3、如果想看列印結果,把system.out放到局部變數的有效域內。
1.這段程式碼沒造對象,int是基本資料型,不是對象。
2.這段程式碼會被編譯器最佳化,結果我猜可能是
int s = 9;
這樣的形式,你可以javap看看因為你用的是java編譯器。
int何來的對象,只不過不斷改變棧的值而已