java执行顺序中有硬件吗

2022-03-26 社会 28阅读

一。JAVA中执行顺序

  • 静态块

  • 构造器

  • 父类构造器

  • 二。JAVA中赋值顺序

  • 静态块直接赋值

  • 块直接赋值

  • 父类继承的属性已赋值

  • 静态变量声明时赋值

  • 成员变量声明时赋值

  • 构造器赋值

  • 第一部分很好测试,我们只需要写一个子类,类中定义一个静态块,一个普通块,一个构造器,它的父类构造器,都打印一条语句,即可明白它们直接的执行顺序

    Mastiff类

  • Java代码  
  •   

  • public class Mastiff extends Dog {  

  • public Mastiff() {  

  • System.out.println("Mastiff");  

  • }  

  • {  

  • System.out.println("block");  

  • }  

  • static {  

  • System.out.println("static block");  

  • }  

  • public static void  main(String[] args){  

  • Mastiff mastiff=new Mastiff();  

  • }  

  • }  

  •   

  • DOG类

  • Java代码  
  •   

  • public class Dog {  

  • public Dog() {  

  • System.out.println("Dog");  

  • }  

  • }  

  •   

  • 运行结果为:

    staticblock
    Dog
    block
    Mastiff

    也就是说,在我们的程序中,实例化一个类对象的时候,运行顺序为:

  • 静态块

  • 父类构造器

  • 本类中的块

  • 本类的构造器 

  • 我们可以更进一步,如果在父类中也有块和静态块呢?

    DOG类改进后源码 

  • Java代码  
  •   

  • public class Dog {  

  • public Dog() {  

  • System.out.println("Dog");  

  • }  

  • static{  

  • System.out.println("super static block");  

  • }  

  • {  

  • System.out.println("super block");  

  • }  

  • }  

  •   

  • Mastiff改进后源码

  • Java代码  
  •   

  • public class Mastiff extends Dog {  

  • public Mastiff() {  

  • System.out.println("Mastiff");  

  • }  

  • {  

  • System.out.println("block");  

  • }  

  • static {  

  • System.out.println("static block");  

  • }  

  • public static void  main(String[] args){  

  • Mastiff mastiff=new Mastiff();        

  • }  

  • }  

  •   

  • 运行的结果为:

    superstaticblock
    staticblock
    superblock
    Dog
    block
    Mastiff

    也就是说此时的运行顺序为:

  • 父类静态块

  • 自身静态块

  • 父类块

  • 父类构造器

  • 自身块

  • 自身构造器 

声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com