java static关键字修饰属性的疑问。

现在有两个类

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方法是不是停了?