while (x < 6) {
x = x-1;
Dog kfl = new Dog();
}
此循环是否会创建6
个新的不同对象,并将它们分配给引用变量kfl
或...?
答案 0 :(得分:1)
这取决于x是多少。同样,以您设置循环的方式,如果x开始于小于6,则循环将无限运行;如果x开始于6或更高,则循环将不执行。
假设int x = 0;
while (x < 6) {
x = x-1;
应替换为
int x = 6;
while (x > 0) {
x--;
或
int x = 0;
while (x < 6) {
x++;
在定义实例kfl
时,您正在 创建新对象,但是它们都分配给了相同的变量,因此您要重写它们。
如果要为实例分配相似的变量,一个好的方法是将它们分配给数组,并为数组的每个元素定义一个新实例。例如,
Dog dogs[] = new Array[5]; // Sets array to 5 elements total
for (int i = 0; i < dogs.length; i++) {
dogs[i] = new Dog();
}
此处使用循环而不是使用while循环的原因是,for循环用于迭代。 while循环旨在用作连续条件-类似于if语句,只是不断重复。因此,当您不知道一个代码块应该迭代多少次时,可以使用while
循环;而当您知道多少次时,可以使用for
循环。
答案 1 :(得分:-1)
对象的创建取决于x
的值。如果x
的值小于6,则它将创建无限数量的对象。在另一种情况下,如果x
的值大于6,则将不会执行循环,因此对象数将为0。
答案 2 :(得分:-2)
它将创建大约5 + Integer.MIN_VALUE
个Dog
个对象。在每次迭代之后,它们之前的对象将有资格被垃圾收集。在while循环之后,将不再引用所有Dog
对象,因为它将超出范围。
这意味着最终您将不会引用任何已创建的Dog
对象。
编辑:我将x视为x=5
。因为必须< 6
来满足while约束。