Java for循环中的静态值
请不要介意标题,我想不出更好的了。如果您有任何建议,请编辑它。我想弄清楚这是怎么回事。假设我有一个类Java for循环中的静态值,java,static,Java,Static,请不要介意标题,我想不出更好的了。如果您有任何建议,请编辑它。我想弄清楚这是怎么回事。假设我有一个类test.java class test{ public static void main(String[] args){ for(int i=0;i<8;i++){ new Testing().run(); } } } 因此,每次for循环运行时以及创建测试对象时,它不应该将静态字符串值重新分配给“并打印ten? 我
test.java
class test{
public static void main(String[] args){
for(int i=0;i<8;i++){
new Testing().run();
}
}
}
因此,每次for循环运行时以及创建测试对象时,它不应该将静态字符串值重新分配给“
并打印ten
?
我得到的结果是
ten
five
five
five
five
five
five
five
因为有了新的测试对象并重新分配了静态字符串值,所以输出不应该一直是
ten
?否,因为您使用了静态变量。
静态变量对于类的所有实例(或对象)都是公共的,因为它是类级别的变量。换句话说,您可以说只创建静态变量的一个副本,并在类的所有实例之间共享。此类变量的内存分配仅在类加载到内存中时发生一次。
创建对象时,它会保存值“”
当您调用run str时,它将保持10,因为您可以看到打印的值。
在第一次迭代后,由于str不包含“”,它会将其值更改为5
您创建的任何对象都将保留str的相同值。否,因为您使用了静态变量。 静态变量对于类的所有实例(或对象)都是公共的,因为它是类级别的变量。换句话说,您可以说只创建静态变量的一个副本,并在类的所有实例之间共享。此类变量的内存分配仅在类加载到内存中时发生一次。 创建对象时,它会保存值“” 当您调用run str时,它将保持10,因为您可以看到打印的值。 在第一次迭代后,由于str不包含“”,它会将其值更改为5
您创建的任何对象都将保持str的相同值。在第一个循环之后,
str
不是空的,因此它被设置为“五”
。您认为什么会导致它被重置?请从str
的声明中删除static
关键字,并查看差异。它是否应该将静态字符串值重新分配给“”:否,因为变量是static
,因此不绑定到类的实例,而是绑定到类本身。初始化类(而不是对象)时,该变量初始化一次为空字符串。在第一个循环之后,str
不是空的,因此它被设置为“五”
。您认为什么会导致它被重置?请从str
的声明中删除static
关键字,并查看差异。它是否应该将静态字符串值重新分配给“”:否,因为变量是static
,因此不绑定到类的实例,而是绑定到类本身。初始化类(而不是对象)时,该变量初始化一次为空字符串。
ten
five
five
five
five
five
five
five