this关键字的用法

在这里插入图片描述
今天同学给我发了这个图片,问我这是什么原因,我虽然知道这是this关键字的问题,但是看了半天没看出来,查找了资料以后才解决出来,突然感觉自己好菜。下面是我处理的代码和运行结果:

public class card {
	private String name;
	private double money;
	public card() {
		name = "无";
		money = 10;		
	}
	public card(String name1) {
//		this();
		this.name = "张三";
	}
	public card(String name2,double money1) {
//		this();
		this.money = 6000;
		this.name = "张三";
	}
	public boolean check() {
		if(money>=0) {
			return true;
		}else {
			return false;
		}
	}
	
	public void showInfo() {
		boolean z=this.check();
		if(z==true) {
		System.out.println("办卡人姓名:"+name+"\t余额:" + money);
	}else {
		System.out.println("余额不足");
	}
	}
			public static void main(String[] args) {
				// TODO Auto-generated method stub
				card c1 = new card();
				c1.showInfo();
				
				card c2 = new card("刘然然");
				c2.showInfo();
				
				card c3 = new card("刘然然",-6000);
				c3.showInfo();
			}
		
}

注意看,我再this()上加了注释,首先我们来看this()上没有注释的结果:
请添加图片描述
然后我们来看一下this()上加了注释的结果:
请添加图片描述

首先我们先来分析一下第一张运行结果:

第一张是this()没被注释,那么this()就会调用我们开头定义的无参构造方法,而我们无参构造方法中定义的name=无,money=10,调用以后name被我们的有参构造方法中的this.name=张三所覆盖,而money却无,所有我们看到第一张输出结果的第二行name=张三,money=10。第二个有参构造方法与第一个运行方式一样。

第二张运行结果:

下面运行结果的图片是我们把this()给注释了,因此有参构造方法没有调用无参构造方法,此时name赋值为张三,但是money没赋值,因此输出结果为:张三 0.0。

一开始错误的结果是因为:this(“张三”),在构造方法中这样使用是不对的,此时的this不知道调用那个构造方法。

this关键字有三种用法:

1.访问成员变量

    private String name;
	private double money;
	public card(String name) {
		this.name = name
	}

这里的this.name指的就是成员变量的name,把有参构造中局部变量的值赋值给成员变量的name。

2.调用成员方法
3.访问构造方法。就是我们上面讲的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值