题目:(1)创建一个类,它包含一个未初始化的String引用。验证该引用被java初始化为null
(2)创建一个类,它包含一个在定义时就被初始化的String,以及一个通过构造器初始化的String域,这两种方法有什么差异?
(1)
public class test { String str; public static void main(String[] args) { test t=new test(); System.out.println(t.str); System.out.println(t.str==null); } }
输出为:
null true
(2)
package iteye; public class test { String str="bupt"; String str1; {System.out.println("before constructor str="+str+" str1="+str1);} public test(String str1){ this.str1=str1; System.out.println("in constructor str="+str+" str1="+str1); } public static void main(String[] args) { test t=new test("chj"); } }
结果:
before constructor str=bupt str1=null in constructor str=bupt str1=chj
有什么区别呢?那就是初始化时机不一样,如果在定义时就初始化那么会先于构造器初始化。