static关键字

成员变量分为实例变量和类变量,方法也可以分为实例方法和类方法,用static修饰的变量为类变量用static修饰的方法为类方法

实例变量和类变量的区别

每个对象的实例变量都分配内存,通过该对象来访问这些实例变量,类变量仅在生成第一个对象时分配内存。



所有实例对象共享一个类变量,每个实例对象对类变量的改变会影响其他实例对象。类变量可以通过类名直接访问不需要生成实例对象,也可以通过实例对象访问

例如

class Rectangle{
    float 长;
    static float 宽;
    Rectangle(float x,float y){
        长=x;
        宽=y;
    }
    float 获取宽(){
        return 宽;
    }
    void 修改宽(float b){
        宽=b;
    }
}


public class ep_1 {
    public static void main(String[] args){
        Rectangle Rectone=new Rectangle(10f,12f);
        Rectangle Recttwo=new Rectangle(16f,12f);
        Rectangle.宽=15;//通过类名操作类变量赋值
        System.out.println("Rectone宽"+Rectone.获取宽());
        System.out.println("Recttwo宽"+Recttwo.获取宽());
        Recttwo.修改宽(16);//通过对象操作类变量
        System.out.println("Rectone修改宽"+Rectone.获取宽());
        System.out.println("Recttwo修改宽"+Recttwo.获取宽());
                
        
    }

}

运行结果

Rectone宽15.0
Recttwo宽15.0
Rectone修改宽16.0
Recttwo修改宽16.0

实例方法和类方法区别

实例方法可以对当前的对象的 实例变量进行操作也可以对类本来进行操作,实例方法由实例对象调用。类方法不能访问实例变量只能访问类变量,类方法可以由类名直接调用也可以由实例对象调用。类对象不能使用this,super关键字

原文地址:https://www.cnblogs.com/gc56-db/p/6718809.html