博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
static块,游离块与构造方法执行顺序
阅读量:6472 次
发布时间:2019-06-23

本文共 933 字,大约阅读时间需要 3 分钟。

hot3.png

A类:

public class A {

    static int i=9;
    static {
        i++;
        System.out.println("A的静态类型"+i);
    }
    {
        i++;
        System.out.println("A的非静态"+i);
    }
    public A(){    
        i++;
        System.out.println("A的无参构造方法"+i);
    }
    public A(String Astr){
        System.out.println("A的有参构造方法");
    }    
}

 

继承A的B类:

public class B extends A{

static int i=9;

    static {
        i++;
        System.out.println("B的静态类型"+i);
    }
    {
        i++;
        System.out.println("B的非静态"+i);
    }
    public B(){
        i++;
        System.out.println("B的无参构造方法"+i);
    }
    public B(String Bstr){
        System.out.println("B的有参构造方法");
    }   
}

测试代码:

        new B();

        System.out.println(B.i);
        System.out.println(A.i);

测试结果:

A的静态类型10

B的静态类型10
A的非静态11
A的无参构造方法12
B的非静态11
B的无参构造方法12
12
12

 

类的执行顺序

        单类:
           1) 执行static的代码块和static的成员变量
           2) 执行非static的代码块和非static的成员变量
           3)执行构造方法

        父子类:

           1) 执行父类的static的代码块和static的成员变量
           2) 执行子类的static的代码块和static的成员变量
           3) 执行父类非static的代码块和非static的成员变量
           4)执行父类的构造方法
           5) 执行子类非static的代码块和非static的成员变量
           6)执行子类的构造方法

 

静态块:用static声明,Jvm加载类时执行并只执行一次;

 

 

 

 

转载于:https://my.oschina.net/u/3788721/blog/1628215

你可能感兴趣的文章
[Unity3d]DrawCall优化手记
查看>>
Struts2和Spring MVC的区别
查看>>
理解Javascript参数中的arguments对象
查看>>
p2:千行代码入门python
查看>>
bzoj1106[POI2007]立方体大作战tet*
查看>>
spring boot configuration annotation processor not found in classpath问题解决
查看>>
由中序遍历和后序遍历求前序遍历
查看>>
我学习参考的网址
查看>>
[Processing]点到线段的最小距离
查看>>
GitHub使用教程、注册与安装
查看>>
<<The C Programming Language>>讀書筆記
查看>>
git代码冲突
查看>>
解析查询 queryString 请求参数的函数
查看>>
学生选课系统数据存文件
查看>>
git bash 风格调整
查看>>
linux操作系统加固软件,系统安全:教你Linux操作系统的安全加固
查看>>
linux中yum源安装dhcp,24.Linux系统下动态网络源部署方法(dhcpd)
查看>>
C#技术------垃圾回收机制(GC)
查看>>
漫谈并发编程(三):共享受限资源
查看>>
【转】github如何删除一个仓库
查看>>