class Value() {
int i;
public Value() {
i = 10;
}
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
}
}
输出结果是什么?
false
为什么?
int i;
public Value() {
i = 10;
}
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
}
}
输出结果是什么?
false
为什么?
equals()方法要自己写的,覆盖Object类的equals方法class Value {
int i;
public Value() {
i = 10;
}
public boolean equals(Value v){
if(i=v.i)
return true;
return false;
}
}
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
----------------------------------------
v1和v2的值是内存地址,并不是字符串。要用"=="来比较
这里的Value类应该写成这样。
class Value
{
int i; public Value ()
{
i = 10;
} public getI()
{
return i;
} public boolean equals(Object obj)
{
if (obj == this)
{
return true;
}
else if (obj == null)
{
return false;
}
if (!(obj instanceof Value))
{
return false;
}
Value tmp = (Value)obj;
if (this.i == tmp.getI())
{
return true;
}
return false;
} public int hashCode()
{
return i;
}
};
并在其中定义你自己的比较方式。
equals是在object 类里已经定义的方法!~如果不覆盖那方法那equals的效果和==一样~~
如果写成v1.i.equals(v2.i)就对了吧
字符串对象调用String类中的equals方法,比较当前字符串对象的实体是否与参数指定的字符串s的实体相同。如:
String tom=new String("we are students");
String boy=new String("We are students");
String jerry=new String("we are students");
tom.equals(boy)的值是false, tom.equals(jerry)的值是true.这里还有一个类似的方法,public boolean equalslgnoreCase(String s) 功能是比较当前字符串对象的实体是否与参数指定的字符串s是否相同,比较是忽略大小写!!
int i;
public Value() {
i = 10;
}
}
public class EqualsMethod2 {
public static void main(String[] args) {
Value v1 = new Value();
Value v2 = new Value();
System.out.println(v1.equals(v2));
}
}
equals与==是不一样的
Value v2 = new Value();
System.out.println(v1.equals(v2));
这里的equals()是指v1和v2对象里的属性相等...可以自己写个程序测试以下
if (v1.equals(v2)) Syste.out.println("v1=v2");
if (v1==v2) Syste.out.println("v1=v2");自己写出来试试,得出结果就懂了
一个人,有一个名字A,一个外号B,那么那么A==B返回true,但是A.equals(B)也返回true.
若对象a==对象b,则是在比较这两个对象在内存中的地址是否相同
若对象a.equals(对象b)则是比较这两个对象里存储的值是否相同
//一个人,有一个名字A,一个外号B,那么那么A==B返回true,但是A.equals(B)也返回true.
讲错鸟,A==B返回true说明A和B一定是同一对象的引用,怎么可能又有A.equals(B)返回false?==比较的是对象的内存地址是否一样,equals()默认比较的也是对象的内存地址,除非覆写该方法,如String类
=============================
恩恩
String的equals()方法是重写过的。可以说==比较对象引用,equals比较内容
但如果比较其他东东一般都需要重写。可以去看一下Object的equals()方法,跟==是一样的。
public boolean equals(Object obj) {
return (this == obj);
}
=============================