1)当==两边是对象时(String,Integer...),两边比的都是地址
2)当==两边是基本类型时(int,float),两边比的都是值
3)默认equals比的是对象的地址,但是重写的话可以改变成比较值,String和Integer的equals就是重写过的

废话少说,Run!!!

package test;public class Test {public static void main(String[] args) {System.out.println("###############对象时比的都是地址################");TestObj t = new TestObj();TestObj t2 = new TestObj();System.out.println(t==t2);//falseSystem.out.println(t.equals(t2));//false
        System.out.println("############基本类型[==]比的是值###########");int a=1;float b=1f;System.out.println(a==b);//true//  System.out.println(a.equals(b)); 写法错误
        System.out.println("##########Integer特殊(equals重写成比较值,但new时==还是比较地址)##########");Integer i1=0;Integer i2=0;System.out.println(i1==i2);//trueSystem.out.println(i1.equals(i2));//trueInteger i3 = new Integer(0);Integer i4 = new Integer(0);System.out.println(i3==i4);//falseSystem.out.println(i3.equals(i4));//trueSystem.out.println(i1==i3);//falseSystem.out.println(i1.equals(i3));//trueSystem.out.println(i4.equals(i2));//trueint i5 = 0;System.out.println(i1.equals(i5));//true 和基本int类型比是比值System.out.println(i1==i5);//true 和基本int类型比也是比值System.out.println(i3.equals(i5));//true new的和基本int类型比是比值System.out.println(i3==i5);//true  new的和基本int类型比也是比值float f6 = 0f;//等同f6=0;System.out.println(i1.equals(f6));//false 注意结果不同说明equals的重写只是对int类型时是比值System.out.println(i1==f6);//trueSystem.out.println(i3.equals(f6));//false 注意结果不同说明equals的重写只是对int类型时是比值System.out.println(i3==f6);//true
        System.out.println("=======String特殊=======");String s1="a";String s2="a";System.out.println(s1==s2);System.out.println(s1.equals(s2));String s3 = new String("a");String s4 = new String("a");System.out.println(s3==s4);System.out.println(s3.equals(s4));System.out.println(s1==s3);System.out.println(s1.equals(s3));System.out.println(s4.equals(s2));}}

对于Integer为什么只会对int作值的比较,查看源代码可见:

/*** Compares this object to the specified object.  The result is* {@code true} if and only if the argument is not* {@code null} and is an {@code Integer} object that* contains the same {@code int} value as this object.** @param   obj   the object to compare with.* @return  {@code true} if the objects are the same;*          {@code false} otherwise.*/public boolean equals(Object obj) {if (obj instanceof Integer) {return value == ((Integer)obj).intValue();}return false;}

转载于:https://www.cnblogs.com/zzss/p/5855677.html

java细节篇(==和equals的区别)相关推荐

  1. java ==和=_Java ==和equals()的区别

    前言 本篇文章讲的是从JVM角度比较==和equals的区别 一:** Java数据类型分类** Paste_Image.png 1:基本数据类型 又称为原始数据类型,他们之间的比较应该使用(==), ...

  2. java中的==和equals的区别

    关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指 ...

  3. Java基础篇:equals()方法与==的区别

    1.超类Object的equals()底层原理: 在Object超类中已经提供了equals()方法,源码如下: public boolean equals(Object obj) { return ...

  4. java中hashcode和equals的区别和联系

    理解: 规范1:若重写equals(Object obj)方法,有必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcod ...

  5. 在Java语言里 ==和equals的区别

    虽然我还没有踏入职场,但是学习Java以来做了很多的学习笔记,在我所看的各种书籍中对这个问题的回答可谓是各有不同,但是我个人感觉它们说的不是很全面,所以自己结合笔记又总结了一点,如果有不周到的地方,还 ...

  6. Java细节:单等于号、双等于号、三等于号(js中才有)的作用及双等于号和equals(源码)的区别

    我们在编程时总是会用到=或==,但是等于号都有什么作用呢?下面我们来看一下 (注:下文会提及一点常量池.堆栈,由于本人了解还不是透彻,暂不做解释,日后会做总结,可先点击字面查看理解) 一.单等于号的作 ...

  7. Java集合篇:集合细节:为集合指定初始容量、asList的缺陷、subList的缺陷

    一.为集合指定初始容量: 集合是我们在Java编程中使用非常广泛的,它就像大海,海纳百川,像万能容器,盛装万物,而且这个大海,万能容器还可以无限变大(如果条件允许).当这个海.容器的量变得非常大的时候 ...

  8. scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别

    这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...

  9. java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?

    部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...

  10. 面试必问一:Java 中 == 和 equals 的区别你知道吗

    面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...

最新文章

  1. 如何有效抵抗电脑辐射
  2. Scala数值类型转换
  3. 哈师大计算机等级考试,哈尔滨师范大学教务处
  4. 数组与集合转换 java
  5. Java构造时成员初始化的陷阱
  6. 模块的封装性分析-读书笔记
  7. 在并发情况下,Elasticsearch 如果保证读写一致?
  8. mssql数据库简繁体互转
  9. VSCode中安装Django插件后实现html语法提示
  10. Leetcode 每日一题——845. 数组中的最长山脉
  11. OpenSocial版的51虚拟支付--ROCKYOU
  12. Visual Studio程序员主题库
  13. 揭秘今日头条推荐10万+
  14. 数据库中文字段按拼音排序
  15. 【_ 記 】发送邮件功能和MimeMessageHelper 对象下的To Cc Bcc(发送,抄送,密送)
  16. Excel中鲜为人知的“照相机”功能(收藏)
  17. 不同网站可以共享cookie吗
  18. HTML自动暂停按钮,css播放暂停按钮实现_html/css_WEB-ITnose
  19. WMS、ERP、进存销软件,三者到底有什么区别?
  20. MFC中如何修改CGroupBox标题和背景色

热门文章

  1. 最小生成树 无根树转有根树 树形动态规划
  2. bug引发的惨案,拼多多100元话费只需4毛钱,损失上千亿……
  3. html设置word页脚,Word页码从任意页开始如何设置?
  4. python读写excel的图片_Python读取excel中的图片完美解决方法
  5. 度量学习中的马氏距离
  6. 前端开发入门到实战:纯CSS实现数据上报和HTML验证
  7. linux 提取网卡驱动,linux(ubuntu18.04)系统上安装RTL8822CE网卡驱动
  8. android textview左边图片,Android TextView 多种方式显示图片-Fun言
  9. iOS plist存储
  10. 熊出没机器人光头强_熊出没:光头强除了3个真名,还有6个外号,第4个最让人心酸...