static

作者: _老徐_ | 来源:发表于2017-01-05 16:42 被阅读13次

    static 表示 全局、静态 的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。
    被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说它不依赖类的特定实例,被类的所有实例共享。
    只要这个类被加载,Jvm就能根据类名在运行时数据区的方法区内找到他们,因此static对象可以在它的任何对象创建之前访问,无需引用任何对象。
    用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量副本,而是类的所有实例共享一个static变量。
    static变量可以用private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用,但是不能再其他类中通过类名来直接饮用
    static修饰的成员方法和成员变量可以通过类名直接访问.
    用static修饰的代码块表示静态代码块,JVM加载类时,就会执行该代码块。

    static变量和实例变量

    静态变量在内存中只有一个copy,JVM只为静态分配一次内存
    实例变量,每创建一个实例,就会为实例变量分配一次内存,实例变量可以在内存中有多个copy,互不影响。
    static 变量使用场景:

    • 对象之间共享值
    • 方便访问变量时

    静态方法

    可以通过类名直接调用
    所以静态方法中不能使用this和super关键字,只能访问类中的静态成员变量和成员方法,因为satatic方法独立于任何实例,因此static方法必须被实现,而不能是抽象的abstract。

    static代码块

    在类中独立于类成员的static 语句块,位置随意,不在任何方法体内,JVM加载类时会执行这些静态代码块,每个代码块只会被执行一次。

    static方法限制

    • 只能调用其他static方法
    • 只能访问static数据
    • 不能使用this或super关键字

    相关文章

      网友评论

          本文标题:static

          本文链接:https://www.haomeiwen.com/subject/zzyzvttx.html