java static

一般通过new创建类对象,才会分配存储空间,方法才被外界调用

public class hello {
        public static void main(String[] args){
                people p1 = new people();
                p1.i ++;
                System.out.println(p1.i);

                people p2 = new people();
                System.out.println(p2.i);

                System.out.println(p1.i == p2.i);
        }
        public static class people {
                int i = 10;
        }
}

这里分别输出11,10,false

也就是说这里p1.i和p2.i指向了不同的存储空间,所以++只对p1.i生效,从最后两个对象判断是否相等为false也可以看出来

但是假如在定义之前加上static关键字,就可以将字段或者方法设置为static,就算创建了两个类对象p1,p2,会共享一个i,字段p1.i和p2.i也会共用一份存储空间

public class hello {
        public static void main(String[] args){
                people p1 = new people();
                p1.i ++;
                System.out.println(p1.i);

                people p2 = new people();
                System.out.println(p2.i);

                System.out.println(p1.i == p2.i);
        }
        public static class people {
                static int i = 10;
        }
}

这里输出为11,11,true

发表回复