一、this是干吗的
在java中的this关键字主要有三个应用:
(1)this调用本类中的属性,也就是类中的成员变量;
(2)this调用本类中的其他方法;
(3)this调用时要放在构造方法的首行。话不多说上代码
public class User {
private String name;
private double balance;
private String pwd;
public User (String name,double balance,String pwd){
this.name = name;
this.balance = balance;
this.pwd = pwd;
}
}
那么我们如果不使用this会发生什么那?
class User {
private String name;
private double balance;
private String pwd;
public User(String name, double balance, String pwd) {
//构造器的实现---初始化对象
//不用this
name = name;
balance = balance;
pwd = pwd;
}
public void showInfo() {
System.out.println("name:" + name + " " + "balance:" + balance + " " + "pwd:" + pwd);
return;
}
}
public class Main {
public static void main(String[] args) {
User account = new User("Yaya", 2, "456");
account.showInfo();
}
}
结果:所有属性输出均为NULL
为什么会这样那,我们明明已经赋值了。
原来如果我们不用this那么我们使用的就是局部变量,局部变量被局部变量赋值自然不会保留,所以我们用this,这样使用的就是成员变量。
例如,当我们把this()放在有参构造函数的末尾时,例如用this("哈哈");我们先不管语法是否有错误,试着按照程序的运行来判断一下结果,我们可以看出,当在创建对象时,假定调用含有this(“哈哈”)的构造函数,则刚开始存放的值,会被this(“哈哈”)调用的只含有一个参数的构造函数覆盖,也就是说,最后的name会变成“哈哈”,这是与我们的初衷相违背的,而且运行结果也是报错,当我们换到构造方法的第一句时,则不会有这种错误,因为它并不会影响到后面name的赋值。