Java構造函數和this關鍵字

 

1、  構造函數java

/*
	一個函數中定義的變量必需要初始化,不然編譯會報錯
	一個類中的數據成員
		一、 若是在定義的時候不初始化,則它的值是系統自動分配好的默認值! 如int型爲零 boolean型是false
			如本程序的A類對象就是這樣

		二、 若是在定義的同時賦初值, 則是能夠的,也就是說該值是生效的.注意在C++中則不能夠,在C++中一個類的數據成員不能在定義的同時初始化,它只能在構造函數中初始化
			如本程序的A類對象就是這樣
			
		三、 若是在定義的同時賦初值,固然生效,但若是在構造函數中又改變了定義時賦的初值,
			則該數據成員最終的值就是構造函數中修改以後的那個值,由於:
				系統會先執行定義時賦的初值,而後再執行構造函數中賦的初值
			如本程序的B類對象就是這樣
*/

class A
{
	int i;
	int j = 10;
	boolean flag;

	void show()
	{
		System.out.println("i = " + i);
		System.out.println("j = " + j);		
		System.out.println("flag = " + flag);
	}
}

class B
{
	int i;
	int j = 10;
	boolean flag;

	public B()
	{	
		System.out.println("之前的值是 " + i + "  " + j + " " + flag);

		i = 88;
		j = 88;
		flag = true;
	}

	void show()
	{
		System.out.println("i = " + i);
		System.out.println("j = " + j);		
		System.out.println("flag = " + flag);
	}
}

class TestConst_3
{
	public static void main(String[] args)
	{
		A aa1 = new A();
		aa1.show();

		B bb1 = new B();
		bb1.show();
	}
}
/*
	在j2sdk1.4.2_16中的運行結果是:
--------------
i = 0
j = 10
flag = false
之前的值是 0  10 false
i = 88
j = 88
flag = true
--------------
*/

2、  this關鍵字函數

/*
  關鍵字this:
    1,在普通方法中,關鍵字this表明方法的調用者,即本次調用了該方法的對象
    2,在構造方法中,關鍵字this表明了該方法本次運行所建立的那個新對象
*/

class A
{
	private int i;
	public A(int i)
	{
		this.i = i;  //將形參 i 賦給該構造方法本次運行所建立的那個新對象的i數據成員
	}
	public void show(){
		System.out.println("i = " + this.i);
			//this表示當前時刻正在調用show方法的對象
			//this能夠省略
	}
}

public class TestThis
{
	public static void main(String[] args){
		A aa1 = new A(100);
		aa1.show();
		
		A aa2 = new A(200);
		aa2.show();
	}	
}
相關文章
相關標籤/搜索