- 定义:代表当前对象的地址
- 可以在构造器和方法中出现,主函数内不能使用
- 指定访问当前对象的方法或者变量
例1
//Car类
package test3;
public class Car {
//属性
String name;
double price;
//构造器
public Car() {
System.out.println("this在构造器中:"+this);
}
//方法
public void run() {
System.out.println("this在构造器中:"+this);
}
//两个this都指向c这个对象的地址
}
//Main
package test3;
public class Main {
public static void main(String[] arg) {
Car c = new Car();
c.run();
}
}
//应用
public Car(String name,double price){
this.name = name;//this指Car类的地址
this.price = price;
//深拷贝
//将传来的值赋到Car类中
}
例2
package test3;
public class Main {
public static void main(String[] arg) {
Car c = new Car("奔驰",30);
System.out.println(c);
System.out.println(c.name);
System.out.println(c.price);
c.Match("宝马");
}
}
package test3;
public class Car {
String name;
double price;
public Car(String name,double price){
this.name = name;
this.price = price;
//深拷贝
}
public void Match(String name) {
System.out.println(name+"正在和"+name+"赛跑");
}
}
我们想输出c中name和Match传入的name赛跑
此时运行输出结果为
原因是name就近选择,导致两个name相同
解决方法:添加this关键字
输出结果
this会调用Match前面的对象里面的数据,即调用c里的name