Java中的this 关键字的问题
看了一段程序就感觉有些疑惑了。。。class Text {
public static void main(String[] args){
Person q=new Person(3);
Person w=new Person(2);
System.out.print(q.getAge());
System.out.println(w.getAge());
}
}
class Person{
private int age;
void setAge(int age){
this.age=age;
}
int getAge(){
return age;
}
Person(int age){
this.setAge(age);//加不加this 结果都一样额
}
}
看到好多Java教材上都这么用this,我就搞不懂这个地方为什么要加this呢 --------------------编程问答-------------------- this代表这个类生成的对象。比如一个类C,他有两个实例(对象)A、B。那个类中定义的this就代表A、B这两个实例。 --------------------编程问答-------------------- 个人理解,this代表当前对象 --------------------编程问答-------------------- this. 智能提示多爽 --------------------编程问答--------------------
神回复,,,赞一个 --------------------编程问答-------------------- 楼主这代码,加不加this都一样,this指当前对象。
"this."用起来比较方便,手写容易出错。 --------------------编程问答-------------------- this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用 --------------------编程问答-------------------- this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用
--------------------编程问答--------------------
厉害 --------------------编程问答--------------------
this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
楼主这代码,加不加this都一样,this指当前对象。
"this."用起来比较方便,手写容易出错。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用
然后。。。写代码的时候在this加与不加都正确的情况下,我们是加this还是不加this呢 --------------------编程问答--------------------
this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
楼主这代码,加不加this都一样,this指当前对象。
"this."用起来比较方便,手写容易出错。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用
然后。。。写代码的时候在this加与不加都正确的情况下,我们是加this还是不加this呢
个人理解,this代表当前对象
呵呵,曾经也有这样的疑问,以前我写代码能加 this 都加 this,现在我写代码能不加 this 就不加 this,记得有一个代码规范,不知道在哪里看到的,像这里的 this 是多余的,多余的东西最好不要写。
--------------------编程问答-------------------- 有些地方可以必须加this有些地方可以不用加.但为了方便和代码的规范性最好都加上this --------------------编程问答-------------------- 你这种情况.可加可不加. --------------------编程问答-------------------- this 代表当前类的对象 ,为了方便点标 --------------------编程问答-------------------- 在构造方法中有些是必须加this的,有些不需要加的最好加上方便,习惯问题。
void setAge(int age){
this.age=age;
}//这里如果不加就不行了, 所以一般自动生成的代码,或者习惯都用this, 并且有提示啊,哈哈
Person(int age){
this.age=age;
}
这里不加this,age=age;是给局部变量age赋值了,属于java中的就近原则,成员变量age调用的时候没有赋值。 --------------------编程问答--------------------
this. 智能提示多爽
第一个this必须加,它这么写的this.age = age;表示本对象的字段等于参数,如果不加,系统理解为参数等于参数,和这个对象的字段就扯不上关系了。
第二个this可以不加,自己感觉看个人习惯了。。。。 --------------------编程问答-------------------- this代表当前类的引用。在方法中,哪个对象调用方法,this就代表谁。 --------------------编程问答-------------------- 通俗的说,this就是指你当前正在被创建的这个对象,你传进来的age的值就是要赋予正在被创建的这个对象的age,这样将我相信你要好理解一点 --------------------编程问答-------------------- 可加可不加的情况下,加与不加是个人的风格;
老加的人求的是一种稳妥 --------------------编程问答-------------------- 楼上正解 ~~~~~~~~~ --------------------编程问答-------------------- 不要加,明显是多余的东西,为何要加? --------------------编程问答--------------------
this代表当前类的引用。在方法中,哪个对象调用方法,this就代表谁。
同意 --------------------编程问答--------------------
this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
楼主这代码,加不加this都一样,this指当前对象。
"this."用起来比较方便,手写容易出错。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用
他说的是第13行 --------------------编程问答--------------------
this是指当前对象,但lz的this.age=age;这行中this不能省略的,由于作用域的不同,在用的时候不加this,默认使用作用域小的。
楼主这代码,加不加this都一样,this指当前对象。
"this."用起来比较方便,手写容易出错。
要是不加:
age = age;类的成员变量age就只是类加载时,由jvm初始化的0,所以打印的结果就是0。
加的话:
this.age = age;就是把参数age复制给成员变量覆盖jvm初始化的0,所以打印结果为23.
也就是说:
this一方面起到提示的作用,另一方面是划分作用域的作用
楼主说的是第18行 --------------------编程问答-------------------- this 就是我的。 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 12行的this必须加,因为11行传入的形参是age,age和Person类中的成员变量age名字相同,12行必须加this特指是Person类中的age,否则java编译器会以就近原则而忽略了成员变量中的age。楼主如果是在eclipse中调试,去掉this和加上this去点击形参中的age就会发现变灰的区域不一样。没有this,12行的两个age变灰了,意思是他们是一样的;加上this,会发现10行和12行的age变灰了。
18行的this加不加都无所谓,加了有智能提示。倒也是,记得某培训学校的老师说:你们知道为什么网上有很多人写代码要在这里加this么?然后他就用eclipse演示下敲个this.,弹出了提示,然后就笑了。。
具体加不加看项目组如何规定吧。 --------------------编程问答-------------------- 当名字想同时,你不用this,怎么区分两个不同对象的属性呢?你age = age.编译器可没那么聪明,它可不知道,分别代表什么。
补充:Java , Java SE