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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 李哲 中级黑马   /  2012-3-29 11:04  /  1984 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

就是对于两个对象,怎样才算==?
==才为真?x==y为真?

不好意思,我知道别人可能问过这个问题。但是我没搜索到。

8 个回复

倒序浏览
菜鸟路过,是不是当两个类的数据成员的值相同时?
回复 使用道具 举报
本帖最后由 姜志钦 于 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;
}
回复 使用道具 举报
对于两个对象==比较的是对象在内存中的地址值,即是否指向同一对象,比如以下经典:
String x = "123";
String y = "123";//如果内存中存在"123"就不会再建新对象
String z=new String("123")//无论如何都会建立一个新对象
x==y是真,x==z为假,因为String是一个特殊的类。
回复 使用道具 举报
==判断的是对象的地址值是否相同,equals判断对象的内容是否相等。
回复 使用道具 举报
要比较String对象的引用时使用==运算符。如果两个字符串变量指向内存中同一个对象,比较返回true。否则,比较返回false。
需要注意的是,“==”操作符不比较的String对象中的文本目前的内容。它只是比较两字符串指向的参考
回复 使用道具 举报
equals:   ;两个对象的内容是否完全一样

==两个变量的值是否相等
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马