装箱和拆箱

 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.1 JAVA装箱和拆箱以及Java Number & Math&Character 类

    JAVA装箱和拆箱 从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了.原文链接: http://www.cnblogs.com/dolph ...

  2. Java装箱和拆箱的基本概念及使用

    Java装箱和拆箱的基本概念及使用 要理解装箱和拆箱的概念,就要理解Java数据类型 装箱:把基本类型用它们相应的引用类型包装起来,使其具有对象的性质.int包装成Integer.float包装成Fl ...

  3. Java 装箱 拆箱

    Java 自动装箱与拆箱   ??什么是自动装箱拆箱 基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我 ...

  4. JAVA——装箱和拆箱

    Java 将某些基本数据类型自动转换为包装类型的过程称为装箱,相反自动将包装类型转换为基本数据类型的过程称为拆箱. Integer integer_1=1; //装箱 int i=integer_1; ...

  5. Java 装箱、拆箱 包装器

    先说java的基本数据类型.java基本数据类型:byte.short.int.long.float.double.char.boolean 基本数据类型的自动装箱(autoboxing).拆箱(un ...

  6. java装箱跟拆箱解析

    /** * 在jdk1.5之后,java为基本数据类型到对应的应用数据类型提供了自动拆箱装箱操作 * 不管是自动拆箱还是自动装箱都是应用数据类型有的方法,基本数据类型是没有任何方法可调用的 *从概念上 ...

  7. Java 装箱和拆箱

    1.装箱机制 基础类型引用到其包装类型,这样就可以调用其各种方法. 例如,我们声明: Integer a = 1; 其在编译过程中会自动解释成: Integer a = Integer.valueOf ...

  8. java装箱拆箱

    基本数据类型的自动装箱(autoboxing).拆箱(unboxing)是自J2SE 5.0开始提供的功能. 一般我们要创建一个类的对象的时候,我们会这样: Class a = new Class(p ...

  9. Java装箱和拆箱

    https://www.cnblogs.com/dolphin0520/p/3780005.html http://mxdxm.iteye.com/blog/2028196 装箱过程是通过调用包装器的 ...

随机推荐

  1. PHPstorm快捷键Ctrl + Alt + Left 或Right不起作用

    最近遇到一个问题,就是安装的phpstorm的回撤快捷键不起作用了,死活用不了!折磨了好久,终于找到解决方法了,具体请看我的github文章: 快捷键Ctrl + Alt + Left 或Right不 ...

  2. Windows 2008 R2 域控制器迁移至windows 2016记录

    文章参考 https://social.technet.microsoft.com/Forums/zh-CN/21a5f5e9-feee-4454-acad-fd22989d7bed/22495296 ...

  3. 第一课android开发之在activity间传递参数

    一.活动间简单参数传递:1.在布局中添加按钮,用<Button,用id设置id名称,id="@+id/这儿填写你要设置成的名称":用text设置按钮上显示的文字.text=& ...

  4. docker 不能访问外网

    如果之前docker能访问外网,现在不能访问, 同时宿主机可以访问外网,那就重启docker.

  5. 014_zk路径过滤分析

    一.线上zk访问延迟特别高需要统计一段时间内的zk写入路径top10,实现如下: #!/usr/bin/env python # -*- coding:utf-8 -*- import re,trac ...

  6. AtCoder Grand Contest 032-B - Balanced Neighbors (构造)

    Time Limit: 2 sec / Memory Limit: 1024 MB Score : 700700 points Problem Statement You are given an i ...

  7. java学习——JDK1.8接口和实现类

    Java 8 新特性:接口的静态方法和默认方法 https://blog.csdn.net/sun_promise/article/details/51220518 接口的默认方法和静态方法 http ...

  8. 队列(FIFO)—循环队列、队列的链式存储

    1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表 ...

  9. js判断iPhone XS、iPhone XS Max、iPhone XR

    // iPhone X.iPhone XS && window.screen.width === && window.screen.height === ; // iP ...

  10. Python基础:搭建开发环境(1)

    1.Python语言简介 2.Python环境 Python环境产品存在多个. 2.1 CPython CPython是Python官方提供的.一般情况下提到的Python就是指CPython,CPy ...