黑马程序员技术交流社区

标题: 两个对象怎样才会==为真? [打印本页]

作者: 李哲    时间: 2012-3-29 11:04
标题: 两个对象怎样才会==为真?
就是对于两个对象,怎样才算==?
==才为真?x==y为真?

不好意思,我知道别人可能问过这个问题。但是我没搜索到。
作者: 何万县    时间: 2012-3-29 11:14
菜鸟路过,是不是当两个类的数据成员的值相同时?
作者: 姜志钦    时间: 2012-3-29 11:14
本帖最后由 姜志钦 于 2012-3-29 11:15 编辑

重写object类中的equals方法
public class Student {
int id;
String name;
int age;
public Student(int id, String name, int age) {
this.name = name;
this.age = age;
this.id = id;
}
@Override //equals比较对象各个属性
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (id != other.id)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name)){
return false;
}
return true;
}
作者: 王国华    时间: 2012-3-29 11:27
对于两个对象==比较的是对象在内存中的地址值,即是否指向同一对象,比如以下经典:
String x = "123";
String y = "123";//如果内存中存在"123"就不会再建新对象
String z=new String("123")//无论如何都会建立一个新对象
x==y是真,x==z为假,因为String是一个特殊的类。

作者: izwj    时间: 2012-3-29 11:27
==判断的是对象的地址值是否相同,equals判断对象的内容是否相等。
作者: 李柯    时间: 2012-3-29 12:47
要比较String对象的引用时使用==运算符。如果两个字符串变量指向内存中同一个对象,比较返回true。否则,比较返回false。
需要注意的是,“==”操作符不比较的String对象中的文本目前的内容。它只是比较两字符串指向的参考
作者: 何万县    时间: 2012-3-29 15:21
equals:   ;两个对象的内容是否完全一样

==两个变量的值是否相等





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