关于equals()方法的深入研究?

来源:百度知道 编辑:UC知道 时间:2024/09/25 00:36:28
1. public class EqualsTest{
2. public static void main(String args[]){
3. Object A = new Long( 7 );
4. Long L = new Long( 7 ) ;
5. if( A.equals( L ))
System.out.println("Equal");
6. else System.out.println("Not Equal");
7. }
8. }
编译运行下段代码的结果是:( Equal )
但是采用下面这段代码却不等。为什么?
public static void main(String [] arg){
Object A = new Long( 7 );
Integer L = new Integer( 7 ) ;
if( A.equals( L ))
System.out.println("Equal");
else System.out.println("Not Equal");
}
编译运行下段代码的结果是:( Not Equal )
他们都是继承了Object这个父类,但是却输出不同的结果。这是为什么呀?
资源:http://www.joomlaclub.com.cn

1.第一个:

Object A = new Long( 7 );
Long L = new Long( 7 ) ;

2.第二个:

Object A = new Long( 7 );
Integer L = new Integer( 7 ) ;

楼主看到两个的区别了吧??这么明显...

你看你的上下两个第一行和第二行相比....

第二个 new Long(7);但却和 new Integer(7);相比...

两个的值当然不一样了...一个是Integer 类型...一个是Long类型....

首先类型都不一样....equals 相比...怎么会一样呢!

例子: Object str=new String("1");
Integer str=new Integer(1);

这两个值会一样吗???? 这个例子更明显而已....Long当然也是这样的喽!!

呵呵....

祝楼主早日成功!

第一个相等是因为 A 向下造型 得到的是一个LONG对像 他们当然相等
第二个 A 向下造型 同样得到一个LONG 对像 LONG 和 INTEGER 当然是不同的对象

equals比较的是对象的内容。第一个例子中,两个对象的内容都是long型的7,而在第二个例子中,两个对像的内容一个是int的一个是long的当然就不相同了。

对象类型都不一样当然不相同了

Equal应该是比较对象是不是相等吧