在Java语言中,我们刚开始接触类与方法时,少不了见到this和static关键字,本篇博客将详细的介绍这两个重要的关键字中的this;
先概述一下this的功能:
(1):this表示本类属性
(2):this表示本类方法
(3):this表示当前对象
(1)下面来看一段代码:
class Person{
private String name;
private int age;
public Person(String name, int age){
name = name; //若不使用this关键字,将会导致就近原则,录入不了初始值
age = age;
}
public String getMessage(){
return name + " " + age;
}
}
public class Class2{
public static void main(String[] args){
Person per = new Person("peter", 18);
System.out.println(per.getMessage());
}
}
若将这段代码输出,将会得到结果: null 0
导致这个结果是为什么呢?
原因在于这两段代码:
name = name;
age = age;
这两段代码并没有达到我们想要的结果,这里的age和name并不是我们类中定义的属性,而是就近原则⭐而来的形参,所以相当于形参给形参赋值,而我们的属性并没有赋值;最后打印出来的就是初始值了。
正确写法:
this.name = name;
this.age = age;
有了this关键字,则this.name表示的是本类属性name;
⭐规范:只要在类中方法访问类中属性,一定要加this关键字;⭐
(2)this调用构造方法
来看这样定义的一个类:
class Person{
private String name;
private int age;
//构造方法重载
public Person(){
System.out.println("*********************");
}
//构造方法重载
public Person(String name){
System.out.println("*********************");
this.name = name;
}
public Person(String name, int age){
System.out.println("*********************");
this.name = name; //若不使用this关键字,将会导致就近原则,录入不了初始值
this.age = age;
}
public String getMessage(){
return name + " " + age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
}
这个类当中有三个构造方法,使用了构造方法重载,但每个构造方法中都有一句
System.out.println("************************“);
这样显得很不规范,我们在编程时,同样的代码千万不能重复出现⭐,否则很不规范,降低开发效率;
那如何来解决这个问题呢,当然想到了我们的关键字this
class Person{
private String name;
private int age;
//构造方法重载
public Person(){
System.out.println("*********************");
}
//构造方法重载
public Person(String name){
this();
//System.out.println("*********************");
this.name = name;
}
public Person(String name, int age){
this(name);
//System.out.println("*********************");
//this.name = name; //若不使用this关键字,将会导致就近原则,录入不了初始值
this.age = age;
}
public String getMessage(){
return name + " " + age;
}
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
}
注意:(1)this调用构造方法⭐必须⭐放在构造方法首行,否则报错!!!
(2)this调用构造方法不能成“环”!!
this调用普通方法就是:this.方法名
这里不再详细的讲如何调用普通方法,很简单!
(3)this表示当前对象:
看一段代码,就不再详细讲解了
// this表示当前对象
class Person{
public void fun(){
//this表示当前对象
//this表示当前调用fun方法的对象
System.out.println("当前对象为" + this);
}
}
public class Class2{
public static void main(String[] args){
Person per1 = new Person();
per1.fun();
System.out.println(per1);
System.out.println("-------------------------------");
Person per2 = new Person();
per2.fun();
System.out.println(per2);
}
}
这段代码的结果为:
当前对象为Person@1db9742
Person@1db9742
-------------------------------
当前对象为Person@106d69c
Person@106d69c
下一篇将会详细讲解static关键字!!!?