Java Core - ‘==’和‘equals’的区别
不管是‘==’还是‘equals’,他们的比较都需要区分类型来讨论的:
‘==’
当比较的数据类型是基本类型时,比较值是否相同
当比较的数据类型是引用类型时,不仅比较值相同还比较其所在内存地址是否相同,也就是引用是否相同。

分析:String不是一个基本类型,它和Integer一样是一个类。由于strC是我们创建并实例化了一个String对象,java虚拟机在heap(堆)里为strC重新开辟了一块空间,因此它和strA、strB的引用是不一样的,所谓引用就是该变量在堆中的起始地址。
‘equals’
equals的本质就是==,但一些类如String、Integer对该方法进行了重写,只进行值的比较,但是没有重写该方法的类,还是比较引用地址。如自定义的类,下图中,我在Demo1中定义了一个内部类,然后分别实例化:

顺便提一下,内部类虽然在宿主类中,但javac编译出来的class(字节码文件)是宿主类的字节码文件在同一目录下的:

Java Core - ‘==’和‘equals’的区别的更多相关文章
- java 的==和equals的区别(二)
java 的==和equals的区别 java 的==和equals的区别 ==通常表明引用的是同一个东西(引用的地址相同),equals通常表明两个对象的内容相同(值相同) ------------ ...
- Java 中 == 和 equals 的区别
有一段时间,== 和 equals 的区别一直困扰着我.因为涉及到Java的内存机制,然而Java的内存机制又是比较抽象的东西,所以对那时候的我来说,实在是很难理解. == 和 equals 最大的区 ...
- Java中“==”与equals的区别以及equals方法的重写
一.“==”与equals的区别: (1)==代表比较双方是否相同: 基本数据类型表示值相等. 引用数据类型表示地址相等,即同一个对象. (2)Object中的equals()方法:是否为同一个对象的 ...
- java 中 ==和equals 的区别
Java中equals和==的区别 java中的数据类型,可分为两类: 1.基本数据类型,也称原始数据类型.byte,short,char,int,long,float,double,boolea ...
- JAVA中“==”与equals()方法区别
equals 方法是 java.lang.Object 类的方法 有两种用法说明: ()对于字符串变量来说,使用"=="和"equals()"方法比较字符串时, ...
- Java中==与equals的区别及理解
区别: "==" 比较的是两个引用在内存中指向的是不是同一对象(即同一内存空间),也就是说在内存空间中的存储位置是否一致. 如果两个对象的引用相同时(指向同一对象时)," ...
- Java中==与equals()的区别
声明转载来源:http://blog.csdn.net/striverli/article/details/52997927 ==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系 ...
- java 中 “==” 和 equals 的区别
转自https://www.cnblogs.com/www123----/p/7857298.html 在初学Java时,可能会经常碰到下面的代码: 1 String str1 = new Strin ...
- JAVA ==号和equals()的区别
==号和equals()方法都是比较是否相等的方法,那它们有什么区别和联系呢? 首先,==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值: int x = 10; ...
随机推荐
- DotNetCore跨平台~为debain系统添加阿里云加速
回到目录 直接把它阿里云的镜像覆盖到原来的/etc/apt/sources.list文件 cat > /etc/apt/sources.list << EOF deb http:// ...
- jenkins定位GitLab推送的最新Webhook中push event来自哪一个分支
转载请标明出处:http://www.cnblogs.com/zblade/ 一.调研目的 jenkins可以和GitLab搭档,每当GitLab上有commit的时候,都可以触发jenkins执行相 ...
- [Flashback]开启数据库闪回数据库功能
Flashback是Oracle中一个重要的功能,想要使用闪回数据库功能,需要将数据库置于闪回数据库的状态. 1.检查数据库是否开启归档状态 SQL> archive log list; Dat ...
- MyBatis基本要素---核心配置文件
今天就简单的叙述下MyBatis的核心配置文件吧~~ configuration 配置 properties 可以配置在java属性配置文件中 settings 修改Mybatis在运行时的行 ...
- 视频文件列表hover添加视频播放按钮
默认效果图: 鼠标hover效果: 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- http header Content-Type之常用三种
Content-Type 用于指示资源的MIME类型 在响应头中,告诉客户端实际返回内容的类型 在请求头中,告诉服务器实际发送的数据类型 句法: Content-Type: text/html; ch ...
- flex 输入框布局
1:创建一个弹性容器(display:flex) 2:构建2个或3个弹性项目. 3:把弹性项目设置为居中对齐.(align-items:center) 4:改变input自身对齐方式,把它设置为拉伸以 ...
- 3D GIS 应用开发 —— 基于 Mapbox GL 的实践总结
最近在折腾的 web 端的可视化项目,由于相关业务的需要,用到了 Mapbox 这一地图开发的神器.在此先奉上一个基于mapbox-gl实现的demo(来源:uber的deck.gl项目): 下面我们 ...
- thymeleaf th:href url传递多参数
<a th:href="@{/teacherShowMember(class_id=${class.classId},class_name=${class.className})}&q ...
- typescript的数据类型
typescript是JavaScript的扩展,说到js的数据类型,大家肯定会想到它是一种弱类型的语言,不需要指定特定的数据类型,ts的语言也正在往java这些强类型的语言靠近: 看看typescr ...