static关键字

更新时间:2019-03-15 12:58:53 点击次数:1424次
/*静态变量是随着类加载时被完成初始化的,它在内存中仅有一个,且JVM也只会为它分配一次内存,同时类所有的实例都共享静态变量,可以直接通过类名来访问它。*/

/*使用时机: 我们一般在这两种情况下使用静态变量:对象之间共享数据、访问方便。*/

/*局限:  Static确实是存在诸多的作用,但是它也存在一些缺陷。
      1、它只能调用static变量。
      2、它只能调用static方法。
      3、不能以任何形式引用this、super。
      4、static变量在定义时必须要进行初始化,且初始化时间要早于非静态变量。*/

/*总结:
    无论是变量,方法,还是代码块,只要用static修饰,就是在类被加载时就已经"准备好了",也就是可以被使用或者已经被执行,都可以脱离对象而执行。
    反之,如果没有static,则必须要依赖于对象实例。*/
public class TestStatic {

    /*static变量*/
    private static int myNumber = 100;

    /*static代码块 ,静态代码块会随着类的加载一块执行*/
    static {
        System.out.println("ready static");
    }

    /*static方法*/
    private static void myMethod(){
        System.out.println("ready");
    }

    public TestStatic() {
        myNumber++;
    }

    public static void main(String[] args) {

        System.out.println("ready main");
        TestStatic testStatic1 = new TestStatic();
        TestStatic testStatic2 = new TestStatic();

        /*结果相等*/
        System.out.println("testStatic1 : "+ TestStatic.myNumber);
        System.out.println("testStatic2 : "+ TestStatic.myNumber);

    }

    /*而且他可以随意放,可以存在于该了的任何地方。*/
    static {
        System.out.println("ready static1");
    }
}

输出:
ready static
ready static1
ready main
testStatic1 : 102
testStatic2 : 102

本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是一个个人学习交流的平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽,造成漏登,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

回到顶部
嘿,我来帮您!