黑马程序员技术交流社区

标题: equals和==的区别? [打印本页]

作者: 福娃51zx    时间: 2015-3-24 16:14
标题: equals和==的区别?
本帖最后由 福娃51zx 于 2015-3-25 19:59 编辑

equals和==两者用法有什么区别?
作者: 剑雨飘扬    时间: 2015-3-24 16:30
字符串的比较要用equals,用==比较的不是内容而是地址。
作者: 福娃51zx    时间: 2015-3-24 16:32
==也可以比较对象啊,比较对象时有什么区别么?
作者: 圣光忏悔    时间: 2015-3-24 16:33
==比较对象是默认比较对象的地址值,equals是比较的值

最浅显的 String s1 = "a";
String s2 = new String("a");

==是false
equals是true
作者: 福娃51zx    时间: 2015-3-24 16:40
        int a=3;
                int b=3;
                if(a==b){
                   System.out.println("是");
                }else{
                        System.out.println("不是");
                }
可是这里是比较内容的,输出是,不是比较内存地址的
作者: 奋斗的黑马    时间: 2015-3-24 17:18
==  和 Equals 的区别

  1. == 是一个运算符。

  2.Equals则是string对象的方法,可以.(点)出来。



我们比较无非就是这两种 1、基本数据类型比较  2、引用对象比较

1、基本数据类型比较

  ==和Equals都比较两个值是否相等。相等为true 否则为false;



2、引用对象比较  

  ==和Equals都是比较栈内存中的地址是否相等 。相等为true 否则为false;



需注意几点:

  1、string是一个特殊的引用类型。对于两个字符串的比较,不管是 == 和 Equals 这两者比较的都是字符串是否相同;

  2、当你创建两个string对象时,内存中的地址是不相同的,你可以赋相同的值。

    所以字符串的内容相同。引用地址不一定相同,(相同内容的对象地址不一定相同),但反过来却是肯定的;

  3、基本数据类型比较(string 除外) == 和 Equals 两者都是比较值;



作者: ruchsky    时间: 2015-3-25 14:39
在比较字符串的时候建议equals,他们区别是在于  equals比较的两边内容是否相等,用==比较的是它们是否指向同一块内存,也即是同一个对象引用
作者: 邓熊财    时间: 2015-3-25 16:28
个人理解哈!1.5以后的版本和以前的就有很大的区别,==不能用于字符串之间的比较,1.5以后在对象包装类当中超过127的数据用==也是无法比较的吧!说的不对的还望见谅
作者: 奋斗的黑马    时间: 2015-3-25 20:13
奋斗的黑马 发表于 2015-3-24 17:18
==  和 Equals 的区别

  1. == 是一个运算符。

谢谢了!!!请问您现在是黑马的学员吗??
作者: qq563426478    时间: 2015-3-25 21:07
equals比较的是值   ==比较的是内存地址
作者: 和谐木马    时间: 2015-3-26 01:02
不能直接笼统的就来句equals()比较的是值的吧……equals()方法要看你怎么重写object类的方法么,不过一般都是重写的比较值的……




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