Java——静态变量/方法与实例变量/方法的区别

时间:2022-04-28 19:30:49

静态只能调用静态

非静态: 对象名.方法名

package ti;

//通过两个类 StaticDemo、LX4_1 说明静态变量/方法与实例变量/方法的区别。

class StaticDemo {
    static int x;
    int y;
    public static int getX() {
        return x;//静态方法中可以访问静态数据成员x
    }
    public static void setX(int newX) {
        x = newX;
    }
    public int getY() {//int 前加static试试(静态方法中不可以访问非静态数据成员y)
        return y;// 非静态方法中可以访问非静态数据成员y
    }
    public void setY(int newY) {//试试增加 x=20; 非静态方法中可以访问静态数据成员x
        y = newY;
    }
}

public class t2 {
    public static void main(String[] args) { 
        System.out.println("静态变量 x="+StaticDemo.getX());
    //System.out.println("实例变量 y="+StaticDemo.getY());//非法,编译将出错
        StaticDemo a= new StaticDemo(); 
        StaticDemo b= new StaticDemo();
        a.setX(1);
        a.setY(8);
        b.setX(3);   //静态调用最终值
        b.setY(4);
        System.out.println("静态变量 a.x="+a.getX());
        System.out.println("实例变量 a.y="+a.getY()); 
        System.out.println("静态变量 b.x="+b.getX()); 
        System.out.println("实例变量 b.y="+b.getY());
    }
}

打印结果:

静态变量 x=0
静态变量 a.x=3
实例变量 a.y=8
静态变量 b.x=3
实例变量 b.y=4