黑马程序员-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语句不能用在一般函数中,只能在构造函数里使用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值