对象中"=="与"equals()"

Integer i1 = new Integer(10);
Integer i2 = new Integer(10);
System.out.println(i1==i2);
System.out.println(i1.equals(i2));

 输出结果为:false  true

原因:

两个对象内容相同,但句柄确是不同的,而“==”,“!=”比较的是对象句柄。

若要比较两个对象中的内容需要用equals()方法。


J1 j1 = new J1();
J1 j2 = new J1();
j1.a = j2.a = 10;
System.out.println(j1==j2);
System.out.println(j1.equals(j2));

  输出结果:false false(J1为自定义类型)

原因:

默认情况下(自定义的类),equals()比较的是句柄。要使其对对象内容比较,需要自己在类中改变equals()。

大多数Java类库都实现了equals(),例如上面的Integer类

猜你喜欢

转载自www.cnblogs.com/wkcode/p/9102034.html