java细节篇(==和equals的区别)
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的区别)相关推荐
- java ==和=_Java ==和equals()的区别
前言 本篇文章讲的是从JVM角度比较==和equals的区别 一:** Java数据类型分类** Paste_Image.png 1:基本数据类型 又称为原始数据类型,他们之间的比较应该使用(==), ...
- java中的==和equals的区别
关于JAVA中的==和equals函数的区别 今天在研读Thinking in java 时注意到==和equals的区别,于是就通过查看JDK_API才读懂了他们的区别,于是将心得分享一下,望批评指 ...
- Java基础篇:equals()方法与==的区别
1.超类Object的equals()底层原理: 在Object超类中已经提供了equals()方法,源码如下: public boolean equals(Object obj) { return ...
- java中hashcode和equals的区别和联系
理解: 规范1:若重写equals(Object obj)方法,有必要重写hashcode()方法,确保通过equals(Object obj)方法判断结果为true的两个对象具备相等的hashcod ...
- 在Java语言里 ==和equals的区别
虽然我还没有踏入职场,但是学习Java以来做了很多的学习笔记,在我所看的各种书籍中对这个问题的回答可谓是各有不同,但是我个人感觉它们说的不是很全面,所以自己结合笔记又总结了一点,如果有不周到的地方,还 ...
- Java细节:单等于号、双等于号、三等于号(js中才有)的作用及双等于号和equals(源码)的区别
我们在编程时总是会用到=或==,但是等于号都有什么作用呢?下面我们来看一下 (注:下文会提及一点常量池.堆栈,由于本人了解还不是透彻,暂不做解释,日后会做总结,可先点击字面查看理解) 一.单等于号的作 ...
- Java集合篇:集合细节:为集合指定初始容量、asList的缺陷、subList的缺陷
一.为集合指定初始容量: 集合是我们在Java编程中使用非常广泛的,它就像大海,海纳百川,像万能容器,盛装万物,而且这个大海,万能容器还可以无限变大(如果条件允许).当这个海.容器的量变得非常大的时候 ...
- scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别
这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...
- java byte 判断相等_你真的了解Java中quot;==quot;和equals()的区别?
部分面试资料链接:https://pan.baidu.com/s/1qDb2YoCopCHoQXH15jiLhA 密码:jsam 想获得全部面试必看资料,关注公众号,大家可以在公众号后台回复" ...
- 面试必问一:Java 中 == 和 equals 的区别你知道吗
面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...
最新文章
- 如何有效抵抗电脑辐射
- Scala数值类型转换
- 哈师大计算机等级考试,哈尔滨师范大学教务处
- 数组与集合转换 java
- Java构造时成员初始化的陷阱
- 模块的封装性分析-读书笔记
- 在并发情况下,Elasticsearch 如果保证读写一致?
- mssql数据库简繁体互转
- VSCode中安装Django插件后实现html语法提示
- Leetcode 每日一题——845. 数组中的最长山脉
- OpenSocial版的51虚拟支付--ROCKYOU
- Visual Studio程序员主题库
- 揭秘今日头条推荐10万+
- 数据库中文字段按拼音排序
- 【_ 記 】发送邮件功能和MimeMessageHelper 对象下的To Cc Bcc(发送,抄送,密送)
- Excel中鲜为人知的“照相机”功能(收藏)
- 不同网站可以共享cookie吗
- HTML自动暂停按钮,css播放暂停按钮实现_html/css_WEB-ITnose
- WMS、ERP、进存销软件,三者到底有什么区别?
- MFC中如何修改CGroupBox标题和背景色
热门文章
- 最小生成树 无根树转有根树 树形动态规划
- bug引发的惨案,拼多多100元话费只需4毛钱,损失上千亿……
- html设置word页脚,Word页码从任意页开始如何设置?
- python读写excel的图片_Python读取excel中的图片完美解决方法
- 度量学习中的马氏距离
- 前端开发入门到实战:纯CSS实现数据上报和HTML验证
- linux 提取网卡驱动,linux(ubuntu18.04)系统上安装RTL8822CE网卡驱动
- android textview左边图片,Android TextView 多种方式显示图片-Fun言
- iOS plist存储
- 熊出没机器人光头强_熊出没:光头强除了3个真名,还有6个外号,第4个最让人心酸...