Java类 静态代码块、构造代码块、构造函数初始化顺序

栏目: Java · 发布时间: 7年前

内容简介:执行结果:构造函数的作用是用于给对象进行初始化一个对象建立,构造函数只运行一次

构造函数

public class Hello{
public Hello(String name){//构造函数
     System.out.println("Hello " + name );
    }
public static void main(String []args) {
        Hello A = new Hello("xiaoming");
    }
}

执行结果:

$ java Hello
Hello xiaoming

构造函数的作用是用于给对象进行初始化

一个对象建立,构造函数只运行一次

构造代码块

public class Hello{
{//构造代码块
   System.out.println("Hello World");
}
public static void main(String []args) {
        Hello A = new Hello();
    }
}

执行结果:

$ java Hello
Hello World

构造代码块是给所有对象进行统一初始化,而构造函数是给对应的对象初始化

构造函数可以是多个,构造代码块中定义的是不同对象共性的初始化内容。如下:

public class Hello{
{//构造代码块
   System.out.println("Hello Java");
}
public Hello(){//构造函数A
     System.out.println("Hello A");
    }
public Hello(String name){//构造函数B
     System.out.println("Hello " + name );
    }
public static void main(String []args) {
        Hello A = new Hello(); //对象A 调用构造函数A
        Hello B = new Hello("B"); //对象B 调用构造函数B
    }
}

执行结果:

$ java Hello
Hello Java
Hello A
Hello Java
Hello B

静态代码块

public class Hello{
static{//静态代码块
       System.out.println("Static Code");
}
public static void main(String []args) {//主函数
       System.out.println("Main ()");
    }
}

执行结果:

$ java Hello
Static Code
Main ()

静态代码块是给类初始化的,而构造代码块是给对象初始化的。

静态代码块在同一类中只执行一次,如下:

public class Hello{
static {//静态代码块
    System.out.println("Static Code");
}
public Hello(){//构造函数
    System.out.println("Hello World");
}
public static void main(String []args) {
       Hello A = new Hello();
       Hello B = new Hello();
    }
}

执行结果:

$ java Hello
Static Code
Hello World
Hello World

Java类初始化顺序

public class Hello{
static {//静态代码块
    System.out.println("Hello A");
}
{//构造代码块
    System.out.println("Hello B");
}
public Hello () {//构造函数
    System.out.println("Hello C");
}
public static void main(String []args) {
       System.out.println("Main ()");
       Hello A =new Hello();
    }
}

执行结果:

$ java Hello
Hello A
Main ()
Hello B
Hello C

静态代码块>构造代码块>构造函数

对于继承

class HelloA{
static {//静态代码块
    System.out.println("A的静态代码块");
}
{//构造代码块
    System.out.println("A的构造代码块");
}
public HelloA(){//构造函数
    System.out.println("A的构造函数");
}
}
public class HelloB extends HelloA{
static {//静态代码块
    System.out.println("B的静态代码块");        
}
{//构造代码块
    System.out.println("B的构造代码块");    
}
public HelloB(){//构造函数
    System.out.println("B的构造函数");    
}
public static void main(String[] args) {
    HelloB B = new HelloB();        
}
}

执行结果

$ java HelloB
A的静态代码块
B的静态代码块
A的构造代码块
A的构造函数
B的构造代码块
B的构造函数

父类的静态代码块>子类的静态代码块>父类的构造代码块>执行父类的构造函数>子类的构造代码块>执行子类的构造函数


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

疯狂Java讲义

疯狂Java讲义

李刚 / 电子工业出版社 / 2014-7-1 / 109.00元

《疯狂Java讲义(第3版)(含CD光盘1张)》是《疯狂Java讲义》的第3版,第3版保持了前两版系统、全面、讲解浅显、细致的特性,全面新增介绍了Java 8的新特性,《疯狂Java讲义(第3版)(含CD光盘1张)》大部分示例程序都采用Lambda表达式、流式API进行了改写,因此务必使用Java 8的JDK来编译、运行。 《疯狂Java讲义(第3版)(含CD光盘1张)》深入介绍了Java编......一起来看看 《疯狂Java讲义》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器