equal与==

1.最大的区别是,==是运算符,equal是方法

简述几种情况下的equal与==

  1. java基本类型
  2. 比较包装类型
  3. 比较String类型
  4. 比较对象

1.java基本类型(short,int,long,byte,char,float,double,boolean)

比较基本类型,只能用==,不能用equal,这里的==比较的是两个变量的值

2.比较包装类型

==比较的是内存地址,因为a和b是new出来的,是两个不同的对象,所以地址肯定是不同的,而equal比较的是值,附上源码

3.比较String类型

==比较的是内存地址,equal比较的是值

这里给出一道题,来供参考

这道题我们一步一步来解决,首先s1==s2,==比较的是内存地址,而s2是new出来的新对象,new String("xxxx")放在堆中,而s1的“xxxx”放在常量池中,所以比较结果是false

第二,s1==s5,字符串+的本质是创建了StringBulider对象进行append操作,然后将拼接后的StringBulider对象用toString进行处理,处理后生成的字符串放在字符串池中找有没有相同值的字符串,如果有将引用(s5)直接连接到已有的字符串地址,所以s1和s5的地址相同

第三,s1=s3+s4,这个的原理是涉及到类加载时初始化的问题,s3和s4的结果无法在编译期间确定,如果把s3和s4定义为final类型,结果就是true了,java在编译时,就知道“Program”+"ming"="Programming"了,但却是在运行时才知道s3+s4="Programming"

4.比较对象

==和equal比较的都是内存地址,因为equal没有被重写,没有被重写的equal都是object的equal方法

equal与==的区别相关推荐

  1. C#中equal与==的区别

    C#中equal与==的区别 来源 https://www.cnblogs.com/dearbeans/p/5351695.html C#中,判断相等有两种方式,一种是传统的==操作,一种是objec ...

  2. Java中equal和==的区别

    equal和==均表示相等的意思,但是它们进行实际的相等的判定的时候,却有非常大的区别.这还得从JAVA的堆栈说起.初学者对他们的两者的概念的理解很容易模糊.在实际编程工作中就容易造成一些不容易发现的 ...

  3. string 相等 java_java中string相等问题(==与.equal的具体区别。求详细解释)

    展开全部 这要和String的JVM内部工作原理相结合! 比如:String s1="accp" Java内部将此62616964757a686964616fe58685e5aeb ...

  4. Android equal和==的区别

    怕自己以后忘了,所以在这里先写写! equal和==的区别是,一个用于判断字符串,一个用于判断int是否相等 equal比较的是对象,==比较的是值 转载于:https://www.cnblogs.c ...

  5. string.Compare字符串比较函数中文详解以及与Equal、==的区别

    Chinar blog :www.chinar.xin String 比较函数详解 本文提供全流程,中文翻译 助力快速理解 String 字符串比较函数的区别 为初学者节省宝贵的时间,避免采坑! Ch ...

  6. equalwith java_java中==与equal()方法的区别

    java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolean 他们之间的比较,应用双等号(==), ...

  7. java string equal 与==的区别

    关于String类中重写的equals方法 请先看下面这段代码: public class EqualsTest {     public static void main(String[] args ...

  8. ==与equal在java中应用的感悟

    今天又算是长见识了.了解了下平时不注意的equal和==的区别. 不管是==又或是equal都是用来比较相同与否.当问题就在这里了,比较什么相同呢? 我的在日常的比较无非也就是两种:1.基本数据类型之 ...

  9. java中strings1等于s2_s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2

    s1,s2都是String对象,说说表达式s1==s2与s1.equal(s2 (2009-10-20 21:33:58) 标签: 杂谈 问题:s1,s2都是String对象,说说表达式s1==s2与 ...

最新文章

  1. Python可视化中Matplotlib(4.三种设置样式方法、设置坐标刻度以及标签、设置显示出特殊字符)
  2. php性能优化分析工具XDebug 大型网站调试工具
  3. ARM系列处理器的分类
  4. C语言经典编程题--哥德巴赫猜想 、完数 、猜数字等
  5. 安卓USB开发教程 六 安卓 AOA 2.0
  6. MyEclipse+Tomcat 启动时出现 configuration error occured during startup错误的解决方法
  7. 来做网课老师不?年薪两百万,上不封顶...
  8. autojs 如何获取控件的desc_owchart教程三:如何添加成交量?
  9. 简单理解L0、L1与L2范数
  10. ASP.NET绑定控件语法
  11. 酷站欣赏:12个漂亮的国外单页网站设计案例
  12. SharePoint读取和设置列表栏的内容
  13. python关闭文件-python_文件的打开和关闭
  14. 文件服务器代码大全,文件服务器 代码
  15. glnxa64 matlab 什么版本_Matlab 2014a 免费版-Matlab2014 Mac版下载 V2014b免费版-PC6苹果网...
  16. 陈丹琦新作:关系抽取新SOTA,用pipeline方式挫败joint模型
  17. 机械键盘恢复出厂fn_机械键盘使用说明
  18. android如何加密所有的布局文件夹,android:是否可以加密文件夹
  19. 服务器怎么设置mqtt遗嘱消息,MQTT 遗嘱消息、Retained消息、QOS上线下线实现
  20. 计算机存储单位:bit, Byte, KB, MB, GB, TB, PB, EB, ZB, BB

热门文章

  1. revit服务器系统,Revit 2020 产品系统要求
  2. 手机智能群控系统开发
  3. 谐波均值滤波matlab,谐波均值滤波器.PPT
  4. JavaEE笔记——设计模式
  5. 选择与放弃决定着你的生命
  6. ElasticSearch的_cat命令说明和其JavaAPI
  7. Echarts基本使用(vue实现3D地图)
  8. 二分查找算法(递归+非递归)
  9. git merge的三种操作merge, squash merge, 和rebase merge
  10. Java WEB开发须知知识点---概况篇