Java装箱的 " == " 的问题
装箱和拆箱
- packagecom.xzj.Test;
/*
* @ author thisxzj
* @ create 2019-02-25 10:56
*/
publicclassBase{
publicstaticvoidmain(String[] args) {
finalintNUM=127;
Integeri1=NUM;
Integeri2=Integer.valueOf(NUM);
Integeri3=newInteger(NUM);
System.out.println("i1 ==? i2 "+(i1==i2));
System.out.println("i1 ==? i3 "+(i1==i3));
System.out.println("i2 ==? i3 "+(i2==i3));
System.out.println("i1 equals ? i2 "+(i1.equals(i2)));
System.out.println("i1 equals ? i3 "+(i1.equals(i3)));
System.out.println("i2 equals ? i3 "+(i2.equals(i3)));
}
}
结果:
- i1 ==? i2 true
i1 ==? i3 false
i2 ==? i3 false
i1 equals ? i2 true
i1 equals ? i3 true
i2 equals ? i3 true
Integer 缓存池的大小默认为 -128~127。在int的数字在缓存的范围内的时候,可以认为直接数字装箱和valueOf是等价的。他们使用的是用一份资源。
在超过了缓存池的范围的时候:将上面代码中NUM常量变为128
运行的结果:
- i1 ==? i2 false
i1 ==? i3 false
i2 ==? i3 false
i1 equals ? i2 true
i1 equals ? i3 true
i2 equals ? i3 true
可以看到,超过了这个范围,Integer对象使用的均不是同一份资源。
以上是Integer为例子,探索了包装类的缓存范围。
基本类型对应的缓冲池如下:
boolean: true 、false
byte:-128 ~ 127
short: -128 ~ 127
int: -128 ~ 127
char:0 ~ 127 对应的char
Java装箱的 " == " 的问题的更多相关文章
- 1.1 JAVA装箱和拆箱以及Java Number & Math&Character 类
JAVA装箱和拆箱 从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了.原文链接: http://www.cnblogs.com/dolph ...
- Java装箱和拆箱的基本概念及使用
Java装箱和拆箱的基本概念及使用 要理解装箱和拆箱的概念,就要理解Java数据类型 装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.int包装成Integer.float包装成Fl ...
- Java 装箱 拆箱
Java 自动装箱与拆箱 ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我 ...
- JAVA——装箱和拆箱
Java 将某些基本数据类型自动转换为包装类型的过程称为装箱,相反自动将包装类型转换为基本数据类型的过程称为拆箱. Integer integer_1=1; //装箱 int i=integer_1; ...
- Java 装箱、拆箱 包装器
先说java的基本数据类型.java基本数据类型:byte.short.int.long.float.double.char.boolean 基本数据类型的自动装箱(autoboxing).拆箱(un ...
- java装箱跟拆箱解析
/** * 在jdk1.5之后,java为基本数据类型到对应的应用数据类型提供了自动拆箱装箱操作 * 不管是自动拆箱还是自动装箱都是应用数据类型有的方法,基本数据类型是没有任何方法可调用的 *从概念上 ...
- Java 装箱和拆箱
1.装箱机制 基础类型引用到其包装类型,这样就可以调用其各种方法. 例如,我们声明: Integer a = 1; 其在编译过程中会自动解释成: Integer a = Integer.valueOf ...
- java装箱拆箱
基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(p ...
- Java装箱和拆箱
https://www.cnblogs.com/dolphin0520/p/3780005.html http://mxdxm.iteye.com/blog/2028196 装箱过程是通过调用包装器的 ...
随机推荐
- C# -- 等待异步操作执行完成的方式
C# -- 等待异步操作执行完成的方式 1. 等待异步操作的完成,代码实现: class Program { static void Main(string[] args) { Func<int ...
- 一个ELK日志检索实施案例
figure:first-child { margin-top: -20px; } #write ol, #write ul { position: relative; } img { max-wid ...
- wifi扫描
获取当前位置的wifi,信道,强度,mac #include "ESP8266WiFi.h" IPAddress apIP(192, 168, 4, 1); void setup( ...
- pyqt5在textBrowser添加文本并自动滑动到底
pyqt5在textBrowser添加文本并自动滑动到底 说明: 1.按下按钮pushButton,把单行文本框lineEdit里的内容循环不断的添加到多行文本展示框textBrowser.2.必须要 ...
- Graphic
画圆操作 package demo1; import java.awt.Graphics; import javax.swing.*; import javax.swing.JPanel; publi ...
- (light oj 1024) Eid (最小公倍数)
题目链接: http://lightoj.com/volume_showproblem.php?problem=1024 In a strange planet there are n races. ...
- MyBatis 3源码解析(四)
四.MyBatis 查询实现 Employee empById = mapper.getEmpById(1); 首先会调用MapperProxy的invoke方法 @Override public O ...
- A/B test
A/B test https://en.wikipedia.org/wiki/A/B_testing A/B testing (bucket tests or split-run testing) i ...
- js slice 假分页
语法 arrayObject.slice(start,end) 参数 描述 start 必需.规定从何处开始选取.如果是负数,那么它规定从数组尾部开始算起的位置.也就是说,-1 指最后一个元素,-2 ...
- Golang 介绍与安装
1.介绍与安装 Golang 是什么 Go 亦称为 Golang(按照 Rob Pike 说法,语言叫做 Go,Golang 只是官方网站的网址),是由谷歌开发的一个开源的编译型的静态语言. Gola ...