java中 this 使用的一些细节

    用this调用构造器,只能在一个构造器中调用另一个构造器
    且必须放在第一条语句

public class ThisD{
	public static void main(String[] agrs){
		T t = new T();
	}
}

class T{
	String name = "张三";
	int age = 20;

	// 用this调用构造器,只能在一个构造器中调用另一个构造器
	// 切必须放在第一条语句
	public T() {
        this("张三");
		System.out.println("T()构造器");

	}

	public T(String name){
		System.out.println("T(String name)构造器");
	}

我们可以看到, 在第一个构造器中,用 this("张三"),是将张三作为形参传递给第二个构造器,从而输出 T(String name)构造器, 后又继续输出 T()构造器。

 this 可以用来访问本类的属性

public class ThisD{
	public static void main(String[] agrs){
		T t = new T();
		t.f1();
		System.out.println("-------------");
		t.f2();
	}
}

class T{
	String name = "张三";
	int age = 20;

	// this 可以用来访问本类的属性
	public void f1(){
		System.out.println(name + "  " + age);
		System.out.println(this.name + "  " + this.age);
	}
	public void f2(){
		String name = "李四";
		System.out.println(name + "  " + age);
		System.out.println(this.name + "  " + this.age);
	}
}

 我们可以看出,当使用 f1() 方法时,name和this.name都可以访问到我们 T 这个类的属性,将姓名和年龄打印。那这两者有什么区别呢

我们可以继续看到横线下 f2() 方法的输出结果,两个方法的区别在于,f2中新定义了一个局部变量name = 李四,根据就近原则,当使用name输出时,它找到的是这个局部变量,而没有这个局部变量时,它才会找到我们本类的属性,而使用this.name时,它找到的一定是我们这个本类的属性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值