Java的this关键字

this关键字总是指向调用该方法的对象。

this关键字不能出现在static修饰的方法中,因为由static修饰的方法属于类本身,而this指代的是一个实例。

1、让类中的一个方法,访问该类中的另一个方法或实例变量
class Dog{
	//定义一个类变量
	int age;
	//方法一
	public void jump() {
		System.out.println("狗会跳");
	}
	//方法二
	public void run() {
		this.jump(); //在方法二中访问方法一
		this.age=5;   //访问该类的一个变量
		System.out.println("狗会跑"+",狗的年龄是:"+this.age);
	}
}
public class DogTest {
	public static void main(String[] args) {
		Dog dog=new Dog();
		dog.run();
	}
}

上述程序中,也可将所有的this都去掉,因为java允许一个成员直接调用另一个成员。但是省略了this只是一个假象,在java的调用过程中,即使省略了主调,但是实际的主调依然存在。例如:如果调用static修饰的成员(变量、方法)时省略了主调,默认是该类为主调;如果调用非static修饰的成员(变量、方法)时省略了主调,默认是this为主调;

2、当成员变量和局部变量重名时,在方法中使用this来表示该方法所在类中的成员变量。

如果一个方法里有个局部变量与成员变量同名,但程序又需要在该方法中访问这个被覆盖的成员变量,那么必须使用this前缀。(成员变量是指在类里定义的变量,局部变量是指在方法中定义的变量)

class Dog{
	int age; //成员变量
	public void grow() {
		int age=5;   //方法内的局部变量
		this.age=8; //表示该对象的成员变量
	}
}
public class DogTest {
	public static void main(String[] args) {
		Dog dog=new Dog();
		dog.grow();  //执行grow()方法,将dog对象的age改为8
		System.out.println(dog.age);  //输出8
	}
}

当类变量与局部变量重名时,要访问类变量,则使用 类名.变量名

3、返回当前的实例

适用于对同一个对象进行多次重复操作的场景

class Dog{
	int age;
	public Dog grow() {
		age++;
		return this;  //此处返回一个Dog实例
	}
}
public class DogTest {
	public static void main(String[] args) {
		Dog dog=new Dog();
		dog.grow()   //dog实例调用的grow() 
		   .grow()   //this返回的实例调用grow() 
		   .grow();  //this返回的实例调用grow() 
		System.out.println(dog.age);  //输出3
	}
}
4、构造器重载

当一个构造器B完全包含构造器A时,可以在B中使用this关键字来调用构造器A

class Person{
	int age;
	char sex;
	String name;
	//两参构造器
	public Person(int age,char sex){
		this.age=age;
		this.sex=sex;
	}
	//三形参的构造器
	public Person(int age,char sex,String name) {
		this(age, sex);  //通过this调用两参构造器
		this.name=name;
	}
	public void info() {
		System.out.println("我的名字是:"+name+",我的年龄是:"+age+",我的性别是:"+sex);
	}
}
public class t {
	public static void main(String[] args) {
		Person le=new Person(25,'女',"陈孝");  
		le.info();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值