Java的this关键字

1.什么是this

 表示当前对象,什么优势当前对象.
 this主要存在于两个位置:
          构造器中:  就表示当前创建的对象.
          方法中:  哪一个对象调用this所在的方法,那么此时this就表示哪一个对象.

当一个对象创建之后,JVM会分配一个引用自身的引用:this.



2.使用this

① 解决成员变量和参数(局部变量)之间的二义性,必须使用;

public class ThisDemo 
{
	private int age;
	private String name;

	public void setAge(int age){
		this.age = age;          //把调用者传递的age赋值给字段age
	}
	public int getAge(){
		return age;
	}

	public void setName(String name){
		this.name = name;       //把调用者传递的name赋值给字段name
	}
	public String getName(){
		return name;
	}

	public static void main(String[] args){
		ThisDemo demo = new ThisDemo();
		demo.setAge(18);
		demo.setName("杨哥");
		System.out.println(demo.getAge());
		System.out.println(demo.getName());
	}
}
② 同类中 实例方法间互调(此时可以省略this,但是不建议省略)。

public class ThisDemo 
{
	private int age;
	private String name;

	public void setAge(int age){
		this.age = age;          //把调用者传递的age赋值给字段age
	}
	public int getAge(){
		return age;
	}

	public void setName(String name){
		this.name = name;       //把调用者传递的name赋值给字段name
	}
	public String getName(){
		return name;
	}

	public void show(){
		System.out.println("hello");
	}
	public void sayHello(){
		show();           //  也可以省略this,不建议
		this.show();       //调用本类中的方法
	}

	public static void main(String[] args){
		ThisDemo demo = new ThisDemo();
		demo.sayHello();
	}
}
③ 将this作为参数传递给另一个方法;


④ 将this作为方法的返回值(链式方法编程);


⑤ 构造器重载的互调,this([参数])必须写在构造方法第一行;


上面的代码,没问题:
但是:存在一些问题.
       1):代码功能重复? this.name  = name;
       2):重复会导致代码维护性低.

所以修改如下:



但是当多个构造器重载时,或者多个方法重载时,一般的,我们是少参数的调用多参数的.
----------------------------------------------------
因为参数越多,该方法考虑的未知的因素也越多,也就是说功能更强大.JDK中的类也是这么设计的


⑥ static不能和this一起使用;
             当字节码被加载进JVM,static成员已经存在了.
             但是此时对象还没有创建,没有对象,就没有this.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值