JAVA里面==和euqals的区别
(1)基本数据类型,用双等号“==”比较,比较的是他们的值,值类型是存储在内存中的栈中
(2)复合数据类型中, 当他们用“==”进行比较的时候,比较的是他们在内存中的存放地址,其变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。所以只有同一个类new出来的对象比较结果为true,不同对象成员变量比较结果始终为false。
equals操作比较两个对象存储的堆中的内容是否相同
“==”比较的是2个对象的地址,所以当equals为true时,“==”不一定为true。
-------------------------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
|
这题考的是引用和内存。
//声明了3个Square类型的变量a, b, c
//在stack中分配3个内存,名字为a, b, c
Square a, b, c;
//在heap中分配了一块新内存,里边包含自己的成员变量width值为48L,然后stack中的a指向这块内存
a = new Square(42L);
//在heap中分配了一块新内存,其中包含自己的成员变量width值为48L,然后stack中的b指向这块内存
b = new Square(42L);
//stack中的c也指向b所指向的内存
c = b;
//在stack中分配了一块内存,值为42
long s = 42L;
|
1
2
3
|
public boolean equals(Object obj) {
return ( this == obj);
}
|
其实就是判断两个引用是否相等,故D也错误。
-----------------------------------------------------------------------------
Integer i01=59 的时候,会调用 Integer 的 valueOf 方法,
1
2
3
4
5
|
public static Integer valueOf( int i) {
assert IntegerCache.high>= 127 ;
if (i >= IntegerCache.low&& i <= IntegerCache.high)
return IntegerCache.cache[i+ (-IntegerCache.low)];
return new Integer(i); }
|
这个方法就是返回一个 Integer 对象,只是在返回之前,看作了一个判断,判断当前 i 的值是否在 [-128,127] 区别,且 IntegerCache 中是否存在此对象,如果存在,则直接返回引用,否则,创建一个新的对象。
在这里的话,因为程序初次运行,没有 59 ,所以,直接创建了一个新的对象。
int i02=59 ,这是一个基本类型,存储在栈中。
Integer i03 =Integer.valueOf(59); 因为 IntegerCache 中已经存在此对象,所以,直接返回引用。
Integer i04 = new Integer(59) ;直接创建一个新的对象。
System. out .println(i01== i02); i01 是 Integer 对象, i02 是 int ,这里比较的不是地址,而是值。 Integer 会自动拆箱成 int ,然后进行值的比较。所以,为真。
System. out .println(i01== i03); 因为 i03 返回的是 i01 的引用,所以,为真。
System. out .println(i03==i04); 因为 i04 是重新创建的对象,所以 i03,i04 是指向不同的对象,因此比较结果为假。
System. out .println(i02== i04); 因为 i02 是基本类型,所以此时 i04 会自动拆箱,进行值比较,所以,结果为真。
转载于:https://www.cnblogs.com/zedosu/p/6514640.html
JAVA里面==和euqals的区别相关推荐
- JAVA 中equals()与==的区别
原文地址:http://www.chineselinuxuniversity.net/articles/29594.shtml 值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存 ...
- Java NIO与IO的区别和比较
Java NIO与IO的区别和比较 导读 J2SE1.4以上版本中发布了全新的I/O类库.本文将通过一些实例来简单介绍NIO库提供的一些新特性:非阻塞I/O,字符转换,缓冲以及通道. 一. 介绍NIO ...
- java中Array和ArrayList区别 可以将 ArrayList想象成一种会自动扩增容量的Array
java中Array和ArrayList区别 1)精辟阐述: 可以将 ArrayList想象成一种"会自动扩增容量的Array https://blog.csdn.net/ywjy10280 ...
- JAVA CLASSPATH 和PATH的区别 经典
JAVA CLASSPATH 和PATH的区别 收藏 PATH: 用来指定 java 虚拟机(JVM) 所在在目录,也就是我们最常用的用来编译java源程序的javac.exe 和用来执行 *.cla ...
- java 接口与抽象类的区别
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- 面试必问一:Java 中 == 和 equals 的区别你知道吗
面试必问一:Java 中 == 和 equals 的区别你知道吗 前言 关于这个问题,一般初中级面试中都会遇到,还记得我当初实习找工作的时候也遇到了这个问题,现在都还记得自己是怎么回答的:== 是基本 ...
- POPTEST老李谈JVM、JRE、JDK、java ee sdk with jdk区别
POPTEST老李谈JVM.JRE.JDK.java ee sdk with jdk区别 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作 ...
- 一文告诉你 Java RMI 和 RPC 的区别
转载自 一文告诉你 Java RMI 和 RPC 的区别 RPC 远程过程调用 RPC(Remote Procedure Call Protocol)远程过程调用协议,通过网络从远程计算机上请求调用 ...
- Java之Socket与HTTP区别
转自: Java之Socket与HTTP区别 - 曹刚 - 博客园我们都知道TCP/IP协议共分四层:①链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接 ...
- Java和JavaScript之间的区别
1.简介 我们将在本文中比较Java语言和JavaScript语言. JavaScript由Netscape开发. 它最初是用于客户端的脚本语言,后来又用作客户端和服务器脚本的语言. Java由Jam ...
最新文章
- 4.Git基础-查看提交历史
- ERP项目选型实施注意的几点(二)
- 手把手教你安卓入门(一)
- 小程序mysql+php测试,分享微信小程序的一些常见辅助测试功能:chance
- Seata 是什么?
- 程序员面试金典 - 面试题 01.03. URL化(字符串)
- 【设计模式】设计模式C++编程实现之策略模式(Strategy Pattern)
- Silverlight+WCF 新手实例 象棋 游戏房间列表(十三)
- 小程序文章怎么导出来_微信小程序点餐怎么申请,怎么建立微信点单小程序
- Windows 10 Build 9879 新变化(内含ISO下载)
- VS2008编辑器代码适合的配色方案下载
- Linux 内核的测试和调试(1)
- linux的ssh命令
- Atitit maven 编译与资源文件与web目录自定义配置 与eclipse的集成与war包打包 1.1. 配置webapp目录 plugin设置 webappDirectory	1 1.2.
- 痕迹清理 - Windows
- [阅读笔记]《解析卷积神经网络_深度学习实践手册》魏秀参著
- spring boot整合Quartz 在Job类中注入其他对象报空指针异常java.lang.NullPointerException 	at com.sxt.quartz.QuartzDemo.e
- jira是干什么_jira是什么
- 解析迅捷产品的八大特点
- 全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区 (Multi-AZ) 部署选项
热门文章
- SQL Server 字符串拆分
- 四、hibernate实体对象,事务管理,锁
- Java 常用的 4 种加密方式(MD5+Base64+SHA+BCrypt)
- 经典排序算法(十一)--堆排序Heap Sort
- vxp grandle 自动更新应用
- 个人计算机主板的组成部分,简述计算机主板的基本组成部分
- 如何获取html输入框的值,jQuery如何获取各种input输入框的值
- python mysql使用教程_python进阶之Mysql入门教程
- dos下载ftp文件linux,在DOS和LINUX下的FTP命令
- flash动画制作成品_Flash如何制作雪糕被吃掉的动画