Integer n1 = new Integer(47);
Integer n2 = new Integer(47);
System.out.println(n1 == n2);
System.out.println(n1.equals(n2));
打印结果是什么呢?
答案是false和ture。两个Integer 对象虽然都是相同的。但尽管对象的内容相同,句柄却是不同的,而
==和!=比较的正好就是对象句柄。而equals是对比两个对象的实际内容是否相同。
注意!!!equals()的默认行为是比较句柄,因为大多数Java 类库都实现了equals(),所以它实际比较的是对象的内容,而在自己定义的新类中,除非改变了equals(),否则不可能表现出我们希望的行为。










网友评论