美文网首页
java static 关键字的理解

java static 关键字的理解

作者: 六味帝皇丸 | 来源:发表于2018-12-18 14:10 被阅读0次
1.类的加载顺序:父类的静态变量--》父类的静态方法--》子类的静态变量--》子类的静态方法---》父类的成员变量---》父类的构造方法(如果有够造块,则在构造方法前执行)--》子类的成员变量--》子类的构造方法
2.static只会加载一次,所以通俗点讲第一次new的时候,所有的static都先会被全部载入(以后再有new都会忽略),进行默认初始化。在从上往下进行显示初始化。这里静态代码块和静态成员变量没有先后之分,谁在上,谁就先初始化
public class TestStatic {

    private static int k = 0;

    public static TestStatic t1 = new TestStatic("t1");

    public static TestStatic t2 = new TestStatic("t2");
    private static int i = print("i");
    private static int n = 99;
    public int j = print("j");

    {
        print("构造块");
    }

    static {
        print("静态块");
    }

    private TestStatic(String str) {
        System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
        ++n;
        ++i;
    }


    private static int print(String str) {
        System.out.println((++k) + ":" + str + " i=" + i + " n=" + n);
        ++i;
        return ++n;
    }


    public static void main(String[] args) {
        TestStatic t = new TestStatic("init");
    }

}

上面main方法的运行顺序

  1. 执行int k =0;
  2. 执行new TestStatic("t1"); 他进去不初始化static成员变量,由new TestStatic("init");来初始化,先调用 public int j = print("j"); 执行pint 方法,再执行构块
    再执行静态块,再执行构造方法
    打印如下:
1:j i=0 n=0
2:构造块 i=1 n=1
3:t1 i=2 n=2

3.执行new TestStatic("t2"); 跟上面类似 ,打印如下:

4:j i=3 n=3
5:构造块 i=4 n=4
6:t2 i=5 n=5

4.执行 static int i = print("i"); 打印如下:

7:i i=6 n=6

5.执行private static int n = 99;
6.执行 静态块 打印:

8:静态块 i=7 n=99

7.执行成员变量 int j = print("j");

9:j i=8 n=100

8.执行构造块,打印:

10:构造块 i=9 n=101

9.执行构造方法

11:init i=10 n=102

相关文章

  • Java基础系列-static关键字

    原创文章,转载请标注出处:《Java基础系列-static关键字》 一、概述 static关键字是Java诸多关键...

  • Java synchronized

    Java关键字,可以理解为线程锁。实际上,synchronized(this)以及非static的synchron...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • Java -- Static关键字理解

    1,Java 中被 static 修饰的成员称为静态成员或类成员。它属于整个类所有,而不是某个对象所有,即被类的所...

  • java static关键字理解

    文章大纲:1.为什么static会有这样的效果?2.static的使用3.static误区4.static面试题 ...

  • JAVA Static关键字的理解

    static在日常开发过程中不可避免的一个关键字,也是面试中经常被提及的一个基础知识。对static的认识印象中只...

  • java static 关键字的理解

    1.类的加载顺序:父类的静态变量--》父类的静态方法--》子类的静态变量--》子类的静态方法---》父类的成员变量...

  • 1.3 static 关键字

    static 关键字 《Java编程思想》 中:static方法就是没有this的方法 static 修饰的方法或...

  • Java 面向对象2

    Java 面向对象 1. static 和 final static关键字---修饰成员变量 用static修饰的...

  • Java static关键字

    声明static属性 static是Java中定义的一个关键字,主要是描述全局的概念,所以利用static关键字可...

网友评论

      本文标题:java static 关键字的理解

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