java编程思想练习题-第5章练习1,2- 成员变量初始化

题目:(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

有什么区别呢?那就是初始化时机不一样,如果在定义时就初始化那么会先于构造器初始化。

猜你喜欢

转载自buptchj.iteye.com/blog/2247538