代码块与属性赋值位置
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 }