可以根据下面这段代码的运行结果,得到它们的执行先后顺序等的区别:- /*
- 构造代码块:用于初始化对象,只要对象建立就自动立即初始化,优先于构造函数
- 构造函数:用于初始化对象,对象建立后,可以选择其中一个构造函数
- 静态代码块:用于初始化类,类加载时执行,且只一次
- */
- class Person{
- String name;
- int age;
- static String country;
-
- {
- System.out.print("This is a person.");
- System.out.println("这是构造代码块");
- }
-
- static{
- country = "China";
- System.out.println("这是静态代码块");
- }
-
- Person(String name){
- this.name = name;
- System.out.println("使用第一个构造函数");
- }
-
- Person(String name, int age){
- this.name = name;
- this.age = age;
- System.out.println("使用第二个构造函数");
- }
- }
- class PersonDemo{
- public static void main(String[] args){
- Person p1 = new Person("aa");
- System.out.println("p1:name=" + p1.name + ", age=" + p1.age +
- ", country="+Person.country);
- Person p2 = new Person("aa",22);
- System.out.println("p2:name=" + p2.name + ", age=" + p2.age +
- ", country="+Person.country);
- }
- }
复制代码 |