现在有两个类
public class Test1 {
public static Integer i = 1;
public static void main(String[] args) throws InterruptedException {
while (true){
System.out.println(i++);
Thread.sleep(3000);
System.out.println("i = "+i);
}
}
}
public class Test {
public static void main(String[] args) {
System.out.println(Test1.i);
}
}
我的理解是:在我启动了Test1类的main方法后,会对一直修改Test1的属性,由于这个属性是静态的,所以属性i的修改是可以被所有类所观察到的。当Test1运行一段时间后,再运行Test的main方法来获取Test1类的属性,这个时候获取到的属性应该是修改后的属性了。
结果是:Test中获取的属性是初始值1,Test1运行好像没有生效,是我哪里理解错了吗?
你两个main函数,显然是两个进程跑的,当然看不出来。应该在一个main函数里体现,像下面这样
public class Test1
{
public static Integer i = 1;
public static void main(String[] args) throws InterruptedException
{
Test1 t1=new Test1();
Test1.i=4;
Test1 t2 = new Test1();
System.out.println(t2.i);
}
}
虽然你修改的是实例t1的i值,但是t2的也变了,这就是静态的体现
你运行Test的main方法,Test1的main方法是不是停了?