this关键字的作用
- 强调调用的是本类的东西
- 表示类中的属性
- 用this关键字调用本类的构造方法
- this表示当前对象
调用本类中的属性
public class string {
public static void main(String[] args) {
Person p1=new Person("Alice", 19);
System.out.println(p1.getName()+p1.getAge());
}
}
class Person{
private String name;
private int age;
public Person(String name,int age) {
name=name;
age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果如图,
我们知道,name=name中,第一个name指的是类中的属性,而第二个指的是传进来的参数,属于局部变量,但是计算机不知道啊,为此我们使用了this关键字,格式:
this.name=name;
this.age=age;
修改之后运行结果:
调用本类中的构造方法
示例代码:
public class string {
public static void main(String[] args) {
Person p1=new Person("Alice", 19);
System.out.println(p1.getName()+p1.getAge());
}
}
class Person{
private String name;
private int age;
public Person() {
System.out.println("实例化了一个新对象!");
}
public Person(String name,int age) {
this();
this.name=name;
this.age=age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果:
在代码的一个构造函数中
使用this关键字调用本类中的构造方法。
**调用构造方法时该语句要放在语句体的第一行,这是因为在实例化对象时,构造方法优先调用,在一个类中可以有多个构造方法,构造方法之间可以相互调用,但是不可成环,也就是至少要存在一个构造方法有出口,不去调用其他的构造方法。
代指当前对象
示例代码:
public class string {
public static void main(String[] args) {
Person per1=new Person("Alice", 19);
Person per2=new Person("Alice", 19);
System.out.println(per1.compare(per2));
//System.out.println(per1.getName()+per1.getAge());
}
}
class Person{
private String name;
private int age;
public Person() {
System.out.println("实例化了一个新对象!");
}
public Person(String name,int age) {
this();
this.name=name;
this.age=age;
}
public boolean compare(Person p) {
Person p1=this;
Person p2=p;
if(p1==p2) {
return true;
}
if(p1.name.equals(p2.name)&&p1.age==p2.age) {
return true;
}
return false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
运行结果:
在代码中,可以看出方法compare()中,使用this进行对象传递,这就表明this在这里代指一个对象,而且也就是当前对象,即调用此方法的对象。在java中,通常所说的当前对象就是指调用此方法的对象。