黑馬程序員-this關鍵字

 this:代表所在函數所屬對象的引用,簡單來說哪個對象在調用this所在的函數,this就代表哪個對象。


 this應用:

1、用於區分局部變量和成員變量同名情況。

2、當定義類中功能時,該函數內部要用到調用該函數的對象時
      這時用this來表示這個對象。
  
當不加this關鍵字且成員變量和局部變量同名時,則在調用函數傳參數時,局部變量會屏蔽成員變量:


 class Person
{	
	private String name;
	private int age;
	Person(String name,int age)
	{
		name = name;//局部變量屏蔽了成員變量,未能給成員變量name賦值
		age = age;	
	}
	public void show()
	{
		System.out.println("name="+name+";age="+age);
	}
}
class PersonDemo
{
	public static void main(String[] args)
	{
		Person p = new Person("lisi",20);
		p.show();
	}
}

  輸出結果:

name=null;age=0

class Person
{	
	private String name;
	private int age;
	Person(String name,int age)
	{
		this.name = name;//p對象在調用,所以this指向堆內存中的P對象
		this.age = age;	
	}
	public void show()
	{
		System.out.println("name="+name+";age="+age);
	}
}
class PersonDemo
{
	public static void main(String[] args)
	{
		Person p = new Person("lisi",20);
		p.show();
	}
}

  輸出結果:

name=lisi;age=20


當定義類中的功能,該函數內部要用到調用該函數的對象時,這時用this來表示這個對象。

<pre name="code" class="java">class Person
{
	private String name;
	private int age;
	Person(String name,int age)
	{
		this.name = name;
		this.age = age;
	}
	public boolean compare(Person p)
	{
		return this.age == p.age;//this指調用該函數的對象
	}
}
class PersonDemo
{
	public static void main(String[] args)
	{
		Person p1 = new Person("lisi01",30);
		Person p2 = new Person("lisi02",21);
		System.out.println(p1.compare(p2));
	}
}



  this在構造函數間的調用:
class Person
{
	private String name;
	private int age;
	Person(String name)
	{
		this.name = name;
	}
	Person(String name,int age)
	{
		this(name);//等同於於p(name);
		this.age=age; 
	}
	public void show()
	{
		System.out.println("name="+name+";age="+age);
	}
}
class PersonDemo
{
	public static void main(String[] args)
	{
		Person p = new Person("lisi",20);
		p.show();
	}
} 

  注意:

1、可以通過this();參數的不同來指定調用哪個構造函數。

2、this語句必須在函數的第一行!確保當初始化操作中還有初始化時,先執行初始化中的初始化操作。

3、this語句不能用在一般函數中,只能在構造函數裏使用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章