Java里面的this关键字

老冯_f 发布于 2013/12/14 09:54
阅读 791
收藏 1

看了一段程序就感觉有些疑惑了。。。

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呢

加载中
0
老冯_f
老冯_f
请指点一下
0
karllrak
karllrak

我觉得加不加没有区别.

 privateintage;

11    voidsetAge(intage){
12         this.age=age;
13         }

倒是这里,不如

private int mAge;

void setAge( int age )

{

    mAge = age;

}//不排除作者故意要显示一下this的用法.

老冯_f
老冯_f
我主要是不明白加注释的那行代码为什么加this
0
peanutmain
peanutmain
个人代码习惯吧,好比(obj == null) 和 (null == obj), 没有绝对,自己怎么写得习惯就怎么写吧
如梦技术
如梦技术
哈哈,确实,主要是编译器暗地里规范化了代码!反编译下生成的class都懂了!
0
_Hill3
_Hill3

第一个this加上是很有意义的(当然和不加在程序中没任何影响),这里说的意义是为了区分实参和形参。

而注释处的this,难道说只是为了表明调用的是这个对象的set方法? 加不加效果是一样的,当然代码里不加this的话,java "暗地里还是会自己加上this" 的~~

0
typeorigin
typeorigin

this表示当前实例, 加注释那一行,用不用this 都一样。 那个地方把它写出来无非是把这个方法所属关系明了化。在class 内调用自己的 方法,都可以不加 this, 因为this 表示 “自己”。

 不知道说清楚没

typeorigin
typeorigin
回复 @女汉子_油菜花 : 我个人觉得方法可以不加,但是如果是类的字段的话可以加上,这样代码较长的时候可以和方法的局部变量区别开
老冯_f
老冯_f
是不是以后写代码时,this 少用为好
0
xyxo
xyxo

Within an instance method or a constructor, this is a reference to the current object — the object whose method or constructor is being called.

so, let's think about the case below ~~~

void setAge(int age){
        age=age;
        }
in this case, you will find  the age in Person class will never change!!!(because JVM can not distinguish which class  the two "age" is belonged)

the second this you mention above is useless!!!because the setAge method within the current object----Person(when instantiated) obviously.


老冯_f
老冯_f
也就是说我们以后写代码的时候第一种情况务必加上,第二种情况加上就是画蛇添足?。。。。那就搞不懂这些Java教材为什么有这样的代码了
0
亓斌哥哥
亓斌哥哥
你这个this是为了在利用ide的自动提示功能的
0
Callen
Callen
this是对象的引用,就好比A a=new A()中的a一样。你刚学还没有用到但不说明没有用。
0
Catelyn
Catelyn
this是在方法(非static)里面,方法在栈内存里面,说明调用方法时候把方法入栈会有一个默认的指针指向当前调用方法的对象,这个指针就是this!
0
jdk2010
jdk2010
看编程思想,比如调用a.do(参数),系统默认编译为a.do(this,参数)把当前对象传过去了,有些方法return this也就好懂了
返回顶部
顶部