JAVA基础:“==”和“equals”的区别

来源:互联网 发布:领啦试用网站源码 编辑:程序博客网 时间:2024/05/17 13:10
“==“:

==如果是比较引用类型,则是比较两个引用是否是指向同一个对象。

"equals": 如果引用equals的类没有重写equals方法,则equals方法和==是一样的意思,即比较两个引用地址是否相等。如果重写,则一般比较的是对象的内容是否相等,具体的视重写的方法而定。

Integer a = new Integer(1);Integer b = new Integer(1);a==b为false,equals为true。
因为a和b分别new了两个对象,所以两个对象的地址是不同的,==为false。equals为ture是因为Integer重写了equals方法。所以直接
比较对象的值。
这是Integer类的源代码中的equals方法,可以看到,当a.equals(b)时,则是先判断b是不是Integer的实例,如果是,则把b强制转换
成integer进行数值比较,如果数值相同则为true
上面的输出为false,因为c并没有重写equals方法,所以相当于是c==cc,比较的内存地址,所以为false
"=="比较基本类型如int的时候,则是比较的值相当。
上面返回true,因为s1创建时,常量池里面有了字符串123,所以当s2创建的时候,则s2直接指向字符串123,所以两个是相等的。这点
要注意

原创粉丝点击