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
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的构造函数
父类的静态代码块>子类的静态代码块>父类的构造代码块>执行父类的构造函数>子类的构造代码块>执行子类的构造函数