5.1 用构造器确保初始化
1、构造器与类名相同,构造器没有返回值,这与返回值为"void"明显不同。
2、构造器有助于减少错误,并使代码更易于阅读,Java中的"初始化"和"创建"是捆绑在一起的,两者不可分离
练习一:创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成了null
1 package cn.gyg.test; 2 /* 3 练习1:创建一个类,它包含一个未初始化的String引用,验证该引用被Java初始化成了null 4 */ 5 public class Test01 { 6 public static String str1; 7 public static void main(String[] args) { 8 System.out.println(str1); 9 } 10 } 11 12 out:null
练习二:创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器
初始化的String域。这两种方式有和差异
1 package cn.gyg.test; 2 3 /* 4 练习二:创建一个类,它包含一个在定义时就被初始化了的String域,以及另一个通过构造器 5 初始化的String域。这两种方式有和差异 6 */ 7 public class Test02 { 8 9 public static String str1 = "aaa"; 10 public static String str2; 11 12 public static void main(String[] args) { 13 System.out.println("----------创建对象前---------"); 14 15 System.out.println("str1:" + str1); 16 System.out.println("str2:" + str2); 17 System.out.println("----------创建对象后---------"); 18 new Test02("bbb"); 19 System.out.println("str1:" + str1); 20 System.out.println("str2:" + str2); 21 } 22 23 /*区别:str1在类加载的时候被初始化为"aaa" 24 str2在类加载的时候被初始化为null 25 str2在创建对象的时候被初始化为"str2" 26 */ 27 public Test02(String s) {//通过构造器初始化str2 28 this.str2 = s; 29 } 30 31 public Test02() { 32 } 33 } 34 35 out: 36 ----------创建对象前--------- 37 str1:aaa 38 str2:null 39 ----------创建对象后--------- 40 str1:aaa 41 str2:bbb