黑马程序员技术交流社区

标题: 请教大神,能解释一下== 和 equals的区别吗 [打印本页]

作者: ninini    时间: 2016-6-2 01:50
标题: 请教大神,能解释一下== 和 equals的区别吗
看程序写结果
               
                Integer i1 = new Integer(97);
                Integer i2 = new Integer(97);
                System.out.println(i1 == i2);
                System.out.println(i1.equals(i2));
                System.out.println("-----------");
       
                Integer i3 = new Integer(197);
                Integer i4 = new Integer(197);
                System.out.println(i3 == i4);
                System.out.println(i3.equals(i4));
                System.out.println("-----------");
       
                Integer i5 = 97;
                Integer i6 = 97;
                System.out.println(i5 == i6);
                System.out.println(i5.equals(i6));
                System.out.println("-----------");
       
                Integer i7 = 197;
                Integer i8 = 197;
                System.out.println(i7 == i8);
                System.out.println(i7.equals(i8));
作者: SkyBlack    时间: 2016-6-2 08:34
。。。。哥们儿。你是为了刷帖吧。。。。。
作者: ljd    时间: 2016-6-2 10:35

==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。
equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。
作者: Itheima_yuan    时间: 2016-6-2 10:39
相同点:两者都具有比较功能,返回值类型为boolean
不同点,==既可以比较基本数据类型,也可以比较引用数据类型,比较基本数据类型时比较的是值,比较引用数据类型时比较的是地址值;
equals只能比较引用数据类型,底层采用的是==,一般都会重写hashcode方法,不然比较没有意义
作者: 钱金磊    时间: 2016-6-2 16:14
刷帖的把!这么简单得东西书上有!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2