2017-08-09 184 views
-16
while (x < 6) { 
    x = x-1; 
    Dog kfl = new Dog(); 
} 

此循環是否創建6新的不同對象並將它們分配給參考變量kfl或...?循環創建新對象?

+0

答案是肯定的......但這是一個糟糕的問題。 https://stackoverflow.com/help/how-to-ask – Kon

+0

歡迎使用Stackoverflow,請閱讀[SSCCE](http://sscce.org/) – Blasanka

+0

x-1?雖然x <6?我認爲它不會迭代(如果X> 6)或它將永遠運行 –

回答

-3

它會創建約5 + Integer.MIN_VALUEDog對象。在每次迭代之後,他們之前的對象將有資格被垃圾收集。在while循環之後,所有的Dog對象將不再被引用,因爲它將超出範圍。

這意味着最終您將不會引用任何已創建的Dog對象。

編輯:我把x作爲x=5。因爲它必須是< 6才能滿足while約束。

+1

實際上,這取決於x的初始值(未給出)。如果x的初始值是'Integer.MIN_VALUE',它只會創建一個對象然後退出。 – markspace

+0

實際上,它將創建正好0或無限....(而x <6然後x = x-1)將需要x + = 1 ..... –

+2

@JasonVanBenschoten它不會*無限* ,因爲'x'的值最終會下溢並變成'Integer.MAX_VALUE'。 – Andreas