1 /**
2 * 代码块:
3 *
4 * 1.代码块的作用:用来初始化类、对象。
5 * 2.代码块如果有修饰的话,只能使用static。
6 * 3.分类,静态代码块 vs 非静态代码块。
7 * 4.静态代码块
8 * 内部可以有输出语句。
9 * 随着类的加载而执行,而且只执行一次。
10 * 作用:初始化类的信息。
11 * 如果一个类中定义了多个静态代码块,则按用声明的先后顺序执行。
12 * 静态代码块的执行要优先于非静态代码块的执行。
13 * 静态代码块内只能调用静态的属性、静态的方法,不能调用非静态的结构。
14 *
15 * 5,非静态代码块
16 *
17 * 1)内部可以有输出语句。
18 * 2)随着对象的创建而执行。
19 * 3)每创建一个对象,就执行一次非静态代码进行进行初始化代码块。
20 * 4)作用,可以在创建对象时,对对象的属性进行初始化。
21 * 5)如果一个类中定义了多个非静态代码块,则按声明的先后顺序执行。
22 * 6)非静态代码块内可以调用静态的属性、静态的方法,或非静态的属性、非静态的方法。
23 *
24 * 6.对属性可以赋值的位置
25 *
26 * 1)默认初始化。
27 * 2)显示初始化。
28 * 3)构造器中初始化。
29 * 4)有了对象以后,可以通过“对象.属性“或“对象.方法“的方式,进行赋值。
30 * 5)在代码块中赋值。
31 *
32 * 执行的先后顺序:1---2/5---3---4
33 */
34
35 public class Static {
36 //静态代码块,随着类的加载而加载,可以直接被执行
37 static {
38 Static.add();
39 System.out.println("hello world");
40 }
41 //非静态代码块,随着对象的创建而创建,对象被创建时才执行,
42 {
43 System.out.println("你好");
44 }
45 public static void add(){
46 System.out.println(123);
47 }
48 public static void main(String[] args) {
49 Static.add();
50 Static s=new Static();
51 Static s1=new Static();
52 }
53 }