Java static关键字

static 关键字
static可以修饰类(内部类),成员变量,方法
局部变量不能用static修饰
static修饰成员变量
static修饰的成员变量称为静态成员变量,没有使用static修饰的变量叫做实例成员变量
静态成员变量与实例成员变量的区别
1.从变量的个数上讲
静态成员变量归整个类所有,由所有的对象所共享
改变了静态成员变量的值,其他对象调用的结果是修改后的结果,影响其他对象。
实例成员变量归当前对象所有,值的改变不影响其他对象。
2.访问方式
静态成员变量的推荐访问方式,通过类名.静态成员变量的方式访问。
3.初始化时间
类初始化的时候静态成员变量初始化,实例成员变量在创建对象时才会初始化,静态成员
变量初始化早于实例成员变量,静态成员变量不依赖对象而存在。
static修饰方法
使用static修饰的方法称为静态方法
没有使用static修饰的方法称为实例方法
1.从访问方式上讲
静态方法既可以通过类名来访问也可以通过指向对象的引用来访问(不推荐)
2.成员的访问
静态方法只能访问类中的静态成员,不能访问实例成员
实例方法既可以访问静态成员,也可以访问实例成员
3.this和super的使用
静态方法中不能使用this与super。
而实例方法中可以使用this与super。

public class Static {
    //静态成员变量
    static int x=1;
    //实例成员变量
    int y = 2;
    public void method(){}
    public static void method1(){}
    public static void main(String[] args) {
        Static s = new Static();
        Static s2 = new Static();
        s.y=3;
        System.out.println("y的值:"+s2.y);
        s.x=3;
        System.out.println("x的值:"+s2.x);
        //实例方法的调用
        s.method();
        //静态方法的调用
        s.method1();
        Static.method1();
        method1();
    }
}
y的值:2
x的值:3

静态成员变量的初始化
1.声明处初始化
2.使用静态初始化块
3.两种初始化执行顺序,按代码编写顺序执行
不能在构造器中对静态成员变量进行初始化,因为构造器在创建
对象的时候才会得到执行。而静态成员变量不需要创建任何对象
就能够进行访问。

public class StaticInit {
    //声明处初始化
    static int x=getX();
    //静态初始化块
    //静态初始化块会在初始化类时得到执行(在main方法执行之前执行)
    static{
        x = 2;
        System.out.println("静态初始化块");
    }
    public static int getX(){
        System.out.println("声明处初始化");
        return 5;
    }
    public static void main(String[] args) {
        System.out.println("main方法");
    }
}
声明处初始化
静态初始化块
main方法
发布了35 篇原创文章 · 获赞 10 · 访问量 4万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章