五(十三)代码块

 类的成员之四:代码块
 1.代码块的作用:初始化当前类,或者对象;
 2.代码块如果有修饰的话,只能用static;
 3.分类:静态代码块 vs 非静态代码块;
 4.静态代码块
         可以有输出语句;
         随着类的加载而执行;且执行一次;
         可以初始化类的信息
         如果定义了多个静态代码块,则按照声明的先后顺序执行,静态代码块的执行优先非静态代码块的执行;
         只能调用静态结构 不能调用 非静态结构
         
 5.非静态代码块
         可以有输出语句;
         随着对象的创建而执行;
         每创建一个对象,就执行一次非静态代码块;
         作用:可以在创建对象时,对对象的属性等进行初始化;
         如果定义了多个非静态代码块,则按照声明的先后顺序执行
         可以调用静态结构 和 非静态结构
 对象属性可以赋值的位置:
 a.默认初始化
 b.显示初始化;
 c.构造器初始化;
 d.对象.属性
 e.代码块赋值
 
 执行顺序:a b e c d e
 由父及子,静态先执行;在下面例子中,有一个静态代码块和非静态代码块;这里默认就是先执行静态代码块;并且静态代码块只执行一次;

Person6有父类,并且他的父类有代码块,那么,先执行父类的代码块,再执行Person6的代码块;确切的说是:先执行父类的静态代码块,再执行子类的静态代码块,先执行父类的非静态代码块

再执行子类的非静态代码块;

查看代码:

 1 public class Day14CodeBlock20 {
 2 public static void main(String[] args) {
 3     String desc = Person6.desc;
 4     Person6 person1 = new Person6();
 5     Person6 person2 = new Person6();
 6 }
 7 }
 8 class Person6{
 9     private String name;
10     private int age;
11     static String desc ="我是一个人";
12     public String getName() {
13         return name;
14     }
15     public void setName(String name) {
16         this.name = name;
17     }
18     public int getAge() {
19         return age;
20     }
21     public void setAge(int age) {
22         this.age = age;
23     }
24     
25     //static代码块
26     static{
27         System.out.println("静态代码块");
28     }
29     //代码块
30     {
31         System.out.println("非静态代码块");
32     }
33     
34     
35     
36     public void eat() {
37         System.out.println("人吃饭。。。。");
38         study();
39     }
40     
41     public void study() {
42         System.out.println("学习。。。");
43     }
44     public Person6(String name, int age) {
45         //super();
46         this(age);
47         this.name = name;
48         //this.age = age; //等同于 this("Tome");
49     }
50     public Person6() {
51         super();
52     }
53     public Person6(String name) {
54         this();//调用当前的空参构造器
55         //super();
56         this.name = name;
57         
58     }
59     public Person6(int age) {
60         //super();
61         this.age = age;
62     }
63     public static void info() {
64         System.out.println("我是一个快乐的人!");
65     }
66     
67 }
原文地址:https://www.cnblogs.com/lixiuming521125/p/13387696.html