当前位置: 技术问答>java相关
关于this的一个简单问题。
来源: 互联网 发布时间:2015-08-21
本文导语: 小弟初学java,过程中不断的遇到this,我有些不很明白,如下: class myrect{ int x1=0; int y1=0; int x2=0; int y2=0; myrect buildrect(int x1,int y1,int x2,int y2){ this.x1=x1; ...
小弟初学java,过程中不断的遇到this,我有些不很明白,如下:
class myrect{
int x1=0;
int y1=0;
int x2=0;
int y2=0;
myrect buildrect(int x1,int y1,int x2,int y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
return this;
}
myrect buildrect(Point topleft,Point bottomright){
x1=topleft.x;
y1=topleft.y;
x2=bottomright.x;
y2=bottomright.y;
return this;
}
}
以上是两个函数,为什么要在第一个函数中用“this.x1"而在第二个函数中直接用
x1?
在类的内部,this.x和x有什么区别吗?
谢谢!
class myrect{
int x1=0;
int y1=0;
int x2=0;
int y2=0;
myrect buildrect(int x1,int y1,int x2,int y2){
this.x1=x1;
this.x2=x2;
this.y1=y1;
this.y2=y2;
return this;
}
myrect buildrect(Point topleft,Point bottomright){
x1=topleft.x;
y1=topleft.y;
x2=bottomright.x;
y2=bottomright.y;
return this;
}
}
以上是两个函数,为什么要在第一个函数中用“this.x1"而在第二个函数中直接用
x1?
在类的内部,this.x和x有什么区别吗?
谢谢!
|
第二个方法里当然要用this,你看看它的定义:
myrect buildrect(int x1,int y1,int x2,int y2)
要是不用this就和参数x1混了!
myrect buildrect(int x1,int y1,int x2,int y2)
要是不用this就和参数x1混了!
|
一般情况下this可省略,在第二个buildrect函数中就是如此,this.x1 和
x1是等价的。但第一个buildrect函数中,参数也是x1,如果省略了this就变成 x1 = x1;系统无法区别哪个是哪个了,所以加this以表区分。当然如果你把参数改成其它的变量,this就可省了。
x1是等价的。但第一个buildrect函数中,参数也是x1,如果省略了this就变成 x1 = x1;系统无法区别哪个是哪个了,所以加this以表区分。当然如果你把参数改成其它的变量,this就可省了。
|
this.x1=x1;
这是为了区别外差数x1和函数内部的变量x1,在这里this表示myrect,
myrect buildrect(Point topleft,Point bottomright)
传的是对象
这是为了区别外差数x1和函数内部的变量x1,在这里this表示myrect,
myrect buildrect(Point topleft,Point bottomright)
传的是对象
|
this是调用该方法的对象的句柄。this.x是指该对象的成员变量x,而方法体中的x是指方法的自变量x。当自变量与对象的成员变量(实例变量)同名时,自变量隐藏了实例变量,这时,通过this“揭开”了实例变量。