Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java for循环中的静态值_Java_Static - Fatal编程技术网

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