gpt4 book ai didi

java - for循环中的静态值

转载 作者:行者123 更新时间:2023-12-02 01:32:49 24 4
gpt4 key购买 nike

请不要介意这个标题,我想不出更好的标题了。如果您有任何建议,请编辑它。我想弄清楚这里发生了什么事。假设我有一个类 test.java

class test{
public static void main(String[] args){
for(int i=0;i<8;i++){
new Testing().run();
}
}
}

以及Testing.java

class Testing{
private static String str = "";
public void run(){
if(str.equals("")){
str = "ten";
}else{
str = "five";
}
System.out.println(str);
}
}

因此,每次运行 for 循环以及创建测试对象时,它不应该将静态字符串值重新分配给 "" 并打印 ten 吗?我得到的输出是

ten
five
five
five
five
five
five
five

由于新的测试对象并重新分配静态字符串值,输出不应该始终为10吗?

最佳答案

否,因为您使用了静态变量。静态变量是类的所有实例(或对象)所共有的,因为它是类级别变量。换句话说,您可以说仅创建静态变量的单个副本并在类的所有实例之间共享。此类变量的内存分配仅在类加载到内存中时发生一次。 https://beginnersbook.com/2013/05/static-variable/

当你创建一个对象时,它保存值“” 当您调用 run str 时,您可以看到打印的值,它将保留 10。第一次迭代后,由于 str 不包含“”,它将把它的值更改为 5。

您创建的任何对象都将保留相同的 str 值。

关于java - for循环中的静态值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55783665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com