1 package com.bytezreo.block; 2 3 /** 4 * 5 * @Description 类的成员之四: 代码块(或初始化块) 6 * @author Bytezero·zhenglei! Email:420498246@qq.com 7 * @version 8 * @date 上午8:56:22 9 * @ 1.代码块的作用:用来初始化类,对象 10 * 2.代码块如果有修饰的话 只能用static 11 * 3.分类:静态代码块 vs 非静态代码块 12 * 13 * 4.静态代码块 14 * >内部可以有输出语句 15 * >随着类的加载而执行,而且只执行一次 16 * >作用:初始化类的信息 17 * >如果一个类中定义了多个静态代码块,则按着声明的先后顺序执行 18 * >静态代码块的执行要优先于非静态代码块 19 * >静态代码块内只能调用静态的属性,静态的方法,不能调用非静态的结构 20 * 21 * 22 * 23 * 5.非静态代码块 24 * >内部可以有输出语句 25 * >随着对象的创建而执行 26 * >每创建一个对象,就执行一次非静态代码块 27 * >作用:可以在创建对象时,对对象的属性等进行初始化 28 * >如果一个类中定义多了非静态代码块,则按照声明的先后顺序执行 29 * >非静态代码块内可以调用静态的属性,静态的方法,或非静态的属性,非静态的方法 30 * 31 * 32 * 33 * 总结:由父及子 静态先行 34 * 35 * 对属性可以赋值的位置: 36 * 1.默认初始化 37 * 2.显示初始化 38 * 3.构造器中初始化 39 * 4.有了对象以后,可以通过“对象.属性”或“对象.方法”的方式,进行赋值 40 * 5.在代码块中赋值 41 * 42 * 43 * 44 */ 45 public class BlockTest { 46 public static void main(String[] args) { 47 48 String desc = Person.desc; 49 System.out.println(desc); 50 Person.info(); 51 52 53 Person p1 = new Person(); 54 Person p2 = new Person(); 55 56 System.out.println(p1.age); 57 } 58 59 60 } 61 62 63 class Person 64 { 65 //属性 66 String name; 67 int age; 68 static String desc = "我是一个帅哥!"; 69 70 //构造器 71 public Person() 72 { 73 74 } 75 public Person(String name,int age) 76 { 77 this.name = name; 78 this.age = age; 79 } 80 81 82 83 84 // static 代码块 or 静态代码块 85 static 86 { 87 System.out.println("hello ---1 , static block---静态的属性或方法,随着类的" 88 + "加载而加载"); 89 90 desc = "我是一个爱学习的人1"; 91 //调用静态结构 92 info(); 93 94 ///不能调用非静态结构 95 //eat(); 96 97 } 98 99 static 100 { 101 System.out.println("hello ---2 , static block---静态的属性或方法,随着类的" 102 + "加载而加载"); 103 } 104 105 //非静态代码块 106 { 107 System.out.println("hello block ---- 1"); 108 age = 1; 109 110 //调用静态结构 111 desc = "我是一个爱学习的人2"; 112 info(); 113 //调用非静态结构 114 eat(); 115 } 116 117 { 118 System.out.println("hello block ---- 2"); 119 120 } 121 122 123 124 125 //方法 126 public void eat() 127 { 128 System.out.println("吃饭"); 129 } 130 @Override 131 public String toString() { 132 return "Person [name=" + name + ", age=" + age + "]"; 133 } 134 135 public static void info() 136 { 137 System.out.println("我是一个大大大大大大的帅哥"); 138 } 139 140 141 }