日期:2014-05-20  浏览次数:20648 次

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 都加 this,现在我写代码能不加 this 就不加 this,记得有一个代码规范,不知道在哪里看到的,像这里的 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.,弹出了提示,然后就笑了。。
具体加不加看项目组如何规定吧。