A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ″先森丶玹° 中级黑马   /  2013-11-18 23:41  /  1451 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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,真心不懂为什么这么写,当初就死记的。

评分

参与人数 1黑马币 +3 收起 理由
FFF + 3 一晚水太多分分是不好的!

查看全部评分

3 个回复

倒序浏览
this代表的是你调用该方法的对象
例如:
Person p = new Person();
就是代表p。
public void setAge(int age){
                 this.age=age;
         }
         public int getAge() {
                 return age;
         }
setAge,就是给对象的age赋值
return的话 就是返回什么东西 就是你调用getAge方法
给你返回一个age的值

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 还是有点水~但~~还是给一个分分鼓励好了!.

查看全部评分

回复 使用道具 举报
当你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的对象可以获取当前值或设置新值.

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
这个需要时间,见多了自然就懂了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马