Java基础之==与equal()的区别从刚学java起,对于==与euqal()之间的区别就一直模糊不清,搞了又搞,一直搞不明白,今天决定彻底搞懂。。。。参考博客:http://www.cnblogs.com/pop822/p/6215040.htmlhttp://www.jb51.net/article/73949.htm问题分析:(1)==与equal()各自的作用(2)与引用数据类型,基本数据类型综合以后应该怎么分析(3)项目中使用应该注意什么作用:== 操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量在堆中存储的地址是否相同,即栈中的内容是否相同。equals操作表示的两个变量是否是对同一个对象的引用,即堆中的内容是否相同。==一般用在基本数据类型中,equals()一般比较字符串是否相等比如:String s1 = "Monday";String s2 = "Monday";s1==s1 //true,因为s1,s2的值均存放在常量池中,s1,s1在栈中存放常量池中位置相同String s1 = "Monday";String s2 = new String("Monday");s1==s2;    //falses1.equals(s2);   //true原来,程序在运行的时候会创建一个字符串缓冲池当使用 s2 = "Monday" 这样的表达是创建字符串的时候,程序首先会在这个String缓冲池中寻找相同值的对象,在第一个程序中,s1先被放到了池中,所以在s2被创建的时候,程序找到了具有相同值的 s1将s2引用s1所引用的对象"Monday"第二段程序中,使用了 new 操作符,他明白的告诉程序:"我要一个新的!不要旧的!"于是一个新的"Monday"Sting对象被创建在内存中。他们的值相同,但是位置不同,一个在池中游泳一个在岸边休息。哎呀,真是资源浪费,明明是一样的非要分开做什么呢?结论:要想判断两个对象是否相等,不能通过比较两个对象的引用是否相等,这是永远都得不到相等的结果的,因为两个对象的引用永远不会相等,所以正确的比较方法是直接比较这两个对象,比较这两个对象的实质是不是一样的,即这两个对象里面的内容是不是相同的,通过比较这两个对象的属性值是否相同而决定这两个对象是否相等。所以通过重写类中的equal()方法一般我们在设计一个类时,需要重写父类的equals方法,在重写这个方法时,需要按照以下几个规则设计:1、自反性:对任意引用值X,x.equals(x)的返回值一定为true.2、对称性:对于任何引用值x,y,当且仅当y.equals(x)返回值为true时,x.equals(y)的返回值一定为true;3、传递性:如果x.equals(y)=true, y.equals(z)=true,则x.equals(z)=true4、一致性:如果参与比较的对象没任何改变,则对象比较的结果也不应该有任何改变5、非空性:任何非空的引用值X,x.equals(null)的返回值一定为falseequas()与==就这么多,忘了就来看看,应该就能理解__EOF__作  者:BNDong
出  处:https://www.cnblogs.com/jiadi321/p/10399920.html
关于博主:编程路上的小学生,热爱技术,喜欢专研。评论和私信会在第一时间回复。或者直接私信我。
版权声明:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本。
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!好文要顶 关注我 收藏该文     贾迪123
关注 - 25
粉丝 - 19
+加关注
0 0
« 上一篇: git 删除分支中的文件
» 下一篇: Linux下环境变量配置方法梳理(.bash_profile和.bashrc的区别)
posted @ 2019-02-19 11:23 贾迪123 阅读(1096) 评论(0) 编辑 收藏
刷新评论刷新页面返回顶部
注册用户登录后才能发表评论,请 登录 或 注册, 访问 网站首页。
MENU

Java基础之==与equal()的区别相关推荐

  1. Java基础之equals和==的区别深入解析

    Java基础之equals和==的区别深入解析 以下是本文目录大纲 equals 和 == 的区别 equals 的重写 复写hashCode方法,有31这个数字的作用 1. equals 和 == ...

  2. java基础数据类型与String类型区别

    区别:Java内存存放位置不一样,基本数据类型存在栈(stack),String的对象实例存在堆(heap).另外String,不是基本数据类型,判断是否相等,不能使用==,而应该使用equals方法 ...

  3. Java基础 - Integer和int的区别

    一.int和Integer的区别 两者的区别主要体现在以下几个方面: 1.数据类型不同:int 是基础数据类型,而 Integer 是包装数据类型: 2.默认值不同:int 的默认值是 0,而 Int ...

  4. Java中关于==和equal的区别 以及equals()方法重写

    例子i: string1="aaa"; string2="aaa"; String string3=new String("aaa"); S ...

  5. Java基础 ArrayList和LinkedList的区别和实现原理

    ArrayList 和 LinkedList都是List的实现类,List集合主要有两个特点:1.有序:2.可重复.所以他们两个肯定也有其特征. 下面分别介绍下二者:  1.ArrayList---  ...

  6. Java基础 抽象类和接口的区别、equals 与 == 的区别

    一.抽象类和接口有什么区别 抽象类与接口都用于抽象,但是抽象类可以有自己的部分实现,而接口规范某一行为,调用者实现这个接口. 主要区别: 1.抽象类还是类只能单继承,而接口却可以多实现. 2.抽象类满 ...

  7. Java 基础——构造器和方法的区别

    构造函数(构造器)是一种特殊的函数.其主要功能是用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中.构造函数与类名相同,可重载多个不同的构造函数.在Ja ...

  8. Java基础 — JDK和JRE的区别和环境变量配置

    1.JDK和JRE区别 JDK:java 程序开发工具包,包括编译器(javac.exe).开发工具(javadoc.exe.jar.exe.keytool.exe.jconsole.exe)和更多的 ...

  9. Java基础之nextInt()与nextLine()区别(包括nextInt之后无法nextLine无法读取下一行的数据)

    在Java中其实存在一些小Bug,或者说是一些语法导致的隐蔽问题.其中之一就是,如果我们在使用nextLine()读取输入数据时,如果前面有 nextInt().nextFloat() 等只需要读取一 ...

  10. [Java基础]抽象类和接口的区别

    抽象类和接口的区别:

最新文章

  1. Gartner 「RPA市场竞争格局」:中国厂商首次进入国际视野
  2. AI啊,我这里有些羞羞的东西,你要不要看一眼?
  3. linux Json c++库
  4. Java 负数、零、正数的个数
  5. Action Service Dao三层的功能划分
  6. kotlin学习笔记——Kotlin Android Extensions
  7. 安徽工业大学计算机学院推免名单,2021年安徽工业大学拟录取推免研究生名单公示...
  8. 以C#编写的Socket服务器的Android手机聊天室Demo
  9. 亲儿子 | Azure SignalR 服务现在支持 ASP.NET
  10. 发票管理软件_财务人员都在用的这款发票管理软件,真的值得购买么?
  11. 【分享-windows文件快速搜索神器】Everything 免费、快速搜索文件/文件夹
  12. Linux虚拟化:KVM影子页表
  13. python判断水仙花数
  14. 编译器优化对齐(字节对齐)
  15. 阿里巴巴校园招聘在线面试之附加题
  16. 对于ACM竞赛算法分类的整理
  17. iOS - 下拉上拉菜单,万能菜单,适用于各种场合
  18. 【视频处理】视频拼接视频缝合手把手教你
  19. 【技术教程】RTSP视频流媒体智能分析平台EasyNVR中的H264及H265编码视频存储计算方法介绍
  20. Java——File(文件)

热门文章

  1. 从「广义斯托克斯公式」结合「外微分公式」导出「牛顿-莱布尼茨公式」、「格林公式」、「高斯公式」、「斯托克斯公式」
  2. 运行vue项目遇到的bug
  3. 超声光学成像突破衍射极限
  4. 8、乐趣国学—“不迁怒,不贰过”
  5. 【Windows】之电脑之间共享文件(亲测可行)
  6. MaxToMaya(3DMax场景转换插件)v1.4版
  7. 没听过33大原则,赶紧偷偷学习一下:JS开发者不得不知的33大原则!
  8. 9.9.5. Delaying Execution
  9. python omron Fins -PLC和上位机socket通讯( tcy)
  10. 基于matlab的运动目标检测