黑马程序员技术交流社区
标题:
关于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