目录:
1.==

2.equal

3.==和equal的区别

1.==

(1)我们都知道数据类型分为基本数据类型和引用数据类型,== 在比较不同的数据类型所比较的东西也不一样

比较基本数据类型:比较的是表面的值
比较引用数据类型:比较的是两个引用是否引用的是一个对象

2.equal

(1)比较基本数据类型:注意这里equal不能作为比较基本数据类型的方法
(2)比较引用数据类型:这里分为两种情况
对String和Date等重写了equal的类来说比较的是对象的内容
对没重写的类来说比较的是是否指向同一个对象

看看String源码:

 * Compares this string to the specified object.  The result is {@code* true} if and only if the argument is not {@code null} and is a {@code* String} object that represents the same sequence of characters as this* object.** @param  anObject*         The object to compare this {@code String} against** @return  {@code true} if the given object represents a {@code String}*          equivalent to this string, {@code false} otherwise** @see  #compareTo(String)* @see  #equalsIgnoreCase(String)*/public boolean equals(Object anObject) {if (this == anObject) {return true;}if (anObject instanceof String) {String anotherString = (String) anObject;int n = value.length;if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}

可以看出来equal是object里边的方法,而他的底层也是依赖 == 所以在没重写equal的时候,就和 == 一样比较是不是同一个对象

(3)我们知道String在创建对象的时候可以用new也可以不用new直接赋值
即:

String  a=new String("abc");
String  b="abc";

那么二者有啥不同呢
看下面这一题:


这里有一个常量区:

如果想深究参照博主另一篇博客:

内存分析详解

们new出来的对象会重新在堆区开辟一块空间存放对象,但是我们直接赋值的话就会在常量区寻找有没有一个字符串和赋值用的字符串相同,相同的话就把已经存在的常量区字符串的引用赋给要被赋值的引用,拿上边得的最后一个c==d举例,这里为啥是true呢,那是因为c="abc"首先会在方法区查看有没有一个字符串等于“abc”发现没有,那么就在方法区创建一个“abc”的对象,然后把这个对象的引用赋值给c,然后d又等于”abc“一样的在方法区寻找发现方法区有这么一个”abc“的对象,那么就把这个对象的引用给d所以c和d实际上是指一个对象所以返回true

注意这里方法区也在堆区,但是new出来的对象在虽然在堆区里但是在方法区之外

还在傻傻分不清楚equal和==相关推荐

  1. 国家电网和南方电网还傻傻分不清?

    参看:都2020年了,国家电网和南方电网还傻傻分不清? 一.名称不同 一个叫南方电网,一个叫国家电力电网,虽然都是电网,但是区别还是很大的 而且成立时间不一样:国家电力电网有限公司成立于2002年12 ...

  2. 2021年了,`IEnumerator`、`IEnumerable`接口还傻傻分不清楚?

    IEnumerator.IEnumerable这两个接口单词相近.含义相关,傻傻分不清楚. 入行多年,一直没有系统性梳理这对李逵李鬼. 最近本人在怼着why神的<其实吧,LRU也就那么回事> ...

  3. Session/Cookie/Token还傻傻分不清?

    Cookie.Session.Token 傻傻分不清 Session/Cookie/Token 还傻傻分不清? 相信项目中用JWT Token的应该不在少数,但是发现网上很多文章对 token 的介绍 ...

  4. DOM对象和JQuery对象别还傻傻分不清

    DOM对象和JQuery对象别还傻傻分不清 经常分辨不清哪些是jQuery对象,哪些是 DOM对象? DOM对象,即是我们用传统的方法(javascript)获得的对象,jQuery对象即是用jQue ...

  5. 普及!cmnet、cmiot还傻傻分不清楚?APN设置看看这一篇就够了!!

    大家可能都知道移动apn可分为cmnet.cmwap和cmiot等多种,你知道这些APN的区别吗?别着急,接下来跟着搜卡之家小编一块来了解一下吧.     普及!cmnet.cmiot还傻傻分不清楚? ...

  6. java中OOD_还在傻傻分不清?3分钟快速认识Java中的OOA、OOD、OOP

    在计算机专业中,Java专业是最常设的专业之一,在学习Java时,框架是重要的学习内容,你还在傻傻分不清吗?3分钟快速认识Java中的OOA.OOD.OOP.OOA:Object-Oriented A ...

  7. aop point 只能获取到map嘛_面试被问了几百遍的 IoC 和 AOP ,还在傻傻搞不清楚?...

    这篇文章会从下面从以下几个问题展开对 IoC & AOP 的解释 什么是 IoC? IoC 解决了什么问题? IoC 和 DI 的区别? 什么是 AOP? AOP 解决了什么问题? AOP 为 ...

  8. JS魔法堂:属性、特性,傻傻分不清楚

    一.前言 或许你和我一样都曾经被下面的代码所困扰 var el = document.getElementById('dummy'); el.hello = "test"; con ...

  9. 科普 | Shell中傻傻分不清楚的TOP3

    近来小姐姐又犯憨憨错误,问组内小伙伴export命令不会持久化环境变量吗?反正我是问出口了..然后小伙伴就甩给了我一个<The Linux Command Line>PDF链接.感谢老大不 ...

  10. cdn厂商 同兴万点_同兴万点:TXNetworks和CDNetworks让我们傻傻分不清

    原标题:同兴万点:TXNetworks和CDNetworks让我们傻傻分不清 在2008年2月25日成立的同兴万点,公司全称为同兴万点(北京)网络技术有限公司(TXNetworks),一直专注于CDN ...

最新文章

  1. python刷新cdn_api 刷新是什么-和api 刷新相关的问题-阿里云开发者社区
  2. display与visibility区别
  3. html 批量转换excel,Excel批量转为Html,Html转换成Excel
  4. 滴滴开源首次发布年度报告
  5. Serverless 实战 —— 函数计算 + Typescript 实践
  6. PowerDesigner(六)-物理数据模型(PDM逆向工程)
  7. 【AD】Altium designer画pcb时出现Unknown Pin 和Failed to add class
  8. 检测直线方法 python
  9. 对象入参指定泛型类型_如何得到正确的MethodInfo对象当一个类使用泛型和泛型类型参数...
  10. Python:anaconda3/bin/activate: Permission denied
  11. 设计模式(十):装饰者模式
  12. java中properties类_Java中的Properties类详解
  13. 100万个不重复的8位的随机数
  14. (转)JD-Quant量化交易平台设计:延迟latency
  15. 【图像融合】基于matlab GUI拉普拉斯金字塔+小波变换+NSCT图像融合【含Matlab源码 870期】
  16. webstorm 主题 配色
  17. Java根据模板生成excel并下载
  18. win7修复音频服务器,win7系统下realtek高清晰音频管理器没有声音怎么修复
  19. word段落中插入公式后格式编辑
  20. 【图像处理-计算机视觉学习路线】个人记录

热门文章

  1. 【高能】IM3.9.1版本正式上线!
  2. 破冰接入云信,打造陌生人游戏社交APP
  3. fast.ai 深度学习笔记:第一部分第一课
  4. javascript数组查重方法总结
  5. [BZOJ3874/AHOI2014]宅男计划
  6. nginx 反向代理负载均衡 tomcat集群应用
  7. WideCharToMultiByte和MultiByteToWideChar函数的用法(转)
  8. MYSQL监控-自带工具Query Profiler的使用
  9. 数据源名称和 64 位操作系统
  10. 关于CS架构文件传输流的问题,文中代码都是转自网上,但可保证代码无无误...