当你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的对象可以获取当前值或设置新值.
|