黑马程序员技术交流社区

标题: 关于this return用法,不太懂。。。 [打印本页]

作者: ″先森丶玹°    时间: 2013-11-18 23:41
标题: 关于this return用法,不太懂。。。
class Person{
        private String name;
        private int age;
        Person(String name,int age){
                this.name=name;
                this.age=age;
        }
       
        public boolean equals(Object obj){
               
                if(!(obj instanceof Person)){       
                        return false;
                }
                Person p=(Person)obj;       
               
                System.out.println(this.name+"......"+p.name);
               
                return this.name.equals(p.name)&&this.age==p.age;
               
               
        }
       
       
        public void setName(String name){
                this.name=name;
        }
        public String getName() {
                return name;
        }
       
        public void setAge(int age){
                this.age=age;
        }
        public int getAge() {
                return age;
        }
       
       
       
}       
这样的一段代码,为什么需要构造函数和需要this.x=x, 还有下面的equals重写方法里面的return,以及set get方法的this 和 return,真心不懂为什么这么写,当初就死记的。
作者: zy888802    时间: 2013-11-19 00:01
this代表的是你调用该方法的对象
例如:
Person p = new Person();
就是代表p。
public void setAge(int age){
                 this.age=age;
         }
         public int getAge() {
                 return age;
         }
setAge,就是给对象的age赋值
return的话 就是返回什么东西 就是你调用getAge方法
给你返回一个age的值
作者: qw无语    时间: 2013-11-19 00:12
当你new一个Person对象的时候,在栈中为这个name,age分配内存空间,构造函数可以对name和age初始化.
this.name=name;this.name相当于当前对象的成员name,后面name是构造函数传进来的name.
如果你集合中传入的是String类型,就会用String类型比较,只要返回false,就表示不相同,就存入进来.
而你对象想要比较的话,就要复写equals,首先,先要是同一类对象比较才有用.别的类不一定有getName() , getAge() ,不是同一类对象比较也没意义,所以if(!(obj instanceof Person))先判断. return this.name.equals(p.name)&&this.age==p.age;这句话 只有全部相同的时候才返回true.集合就会认为该相同对象已经存在,就不会add.有一个不一样就会返回false.就继续和之前add其他的对象比较.
至于下面set get方法的this 和return.是让new的对象可以获取当前值或设置新值.


作者: 明月几时有    时间: 2013-11-19 00:45
这个需要时间,见多了自然就懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2