this是java里面的一个关键字,是一种引用类型,在堆(heap)中的每个java对象上都有一个this指向自己。this代表着当前对象的引用。
this作用
1.可以区分成员变量和局部变量。(这个在前面说过)
2.可以调用构造方法
语法:this(实参);
注意:如果要是使用this调用构造方法的话,那么this必须出现在构造方法的第一行。
如下:
//假设在创建长方形的时候,默认长宽分别是3,2,可以通过在无参构造器中调用有参构造器直接赋值
class Rectangle2{
private int width;
private int length;
// 构造方法,无参
public Rectangle2() {
this(3,2);//this()必须出现在构造方法的第一行
Rectangle2(3,2);//构造方法不能这样调用,报错
}
//构造方法,有参
public Rectangle2(int length,int width) {
this.length=length;
this.width=width;
}
//计算长方形的周长
public int getLengthOfRectangle() {
return 2*(this.width+this.length);
}
//计算面积
public int getArea() {
return this.length*this.width;
}
//还可以使用this.方法名的方式调用当前对象的方法
//下面两种方式都可以调用到成员方法getArea方法
//计算三倍面积
public void get3Area() {
System.out.println(3*getArea());
System.out.println(3*this.getArea());
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
}
采用this后的成员变量:
public class thistest {
private String name;
private int age;
public void printName() {
String name="张学友";
System.out.println(name);//这里打印局部变量name的值,因为这个name离它最近
System.out.println(this.name);//使用this关键字,打印的是成员变量
}
public void printName2() {
System.out.println(name);//这里打印的是成员变量name的值
}
public static void main(String[] args) {
thistest tt =new thistest();
tt.setName("Xiaoli");
tt.printName();
tt.printName2();
}
//get set方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
out:
张学友
Xiaoli
Xiaoli
局部变量和成员变量的标识符是可以相同的,如果有相同的标识符,则可以通过this调用成员变量.