有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

for循环中的java静态值

请不要介意标题,我想不出更好的了。如果您有任何建议,请编辑它。我想弄清楚这是怎么回事。假设我有一个类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循环运行时,以及在创建测试对象时,它不应该将静态字符串值重新分配给""和print ten? 我得到的结果是

ten
five
five
five
five
five
five
five

难道不应该因为新的测试对象和重新分配静态字符串值而一直保持ten输出吗


共 (1) 个答案

  1. # 1 楼答案

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

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

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