关于Java自动拆箱装箱中的缓存问题
package cn.zhang.test;
/**
* 测试自动装箱拆箱
* 自动装箱:基本类型自动转为包装类对象
* 自动拆箱:包装类对象自动转化为基本数据类型
*
*
* /*缓存问题*/
/*缓存[-128,127]之间的数字,也就是一个byte,实际上是系统在初始的时候创建了一个范围在[-128,127]之间的一个数组
* 当我们调用valueOf的时候,首先判断该数字是否在[-128,127]之间,如果在,则在数组中拿出该对象,侧面印证了数组
* 本身就是对象,如果不在,则创建一个新的Integer对象
*
* @author 张涛
*
*/
public class TestAutoBox {
public static void main(String[] args) {
Integer a = 10; //自动装箱 编译器会自动改成:Integer a = Integer.valueOf(10); int b = a; //自动拆箱 编译器会自动改成:int b = a.intValue(); // int c = a.intValue();
// System.out.println(b);
// System.out.println(c); // Integer c = null;
// int d = c; //空指针错误,因为调用了c.intValue();这个方法 /*缓存问题*/
/*缓存[-128,127]之间的数字,也就是一个byte,实际上是系统在初始的时候创建了一个范围在[-128,127]之间的一个数组
* 当我们调用valueOf的时候,首先判断该数字是否在[-128,127]之间,如果在,则在数组中拿出该对象,侧面印证了数组
* 本身就是对象,如果不在,则创建一个新的Integer对象
* */
Integer e = -128;
Integer f = Integer.valueOf(-128);
System.out.println(e == f);//true
System.out.println(e.equals(f));//true Integer g = 1234;
Integer h = Integer.valueOf(1234);
System.out.println(g == h);//false
System.out.println(g.equals(h));//true
}
}
关于Java自动拆箱装箱中的缓存问题的更多相关文章
- Java 自动拆箱 装箱 包装类的缓存问题--结合源码分析
都0202 了 java 1.8 已经是主流 自动装箱 .拆箱已经很普遍使用了,那么有时候是不是会遇到坑呢? 我们先来看一段代码: public class TestWraperClass { pub ...
- Java 从Character和char的区别来学习自动拆箱装箱
本文结构 1.Character和char 的区别: 2.自动拆箱装箱 1.Character和char 的区别: Character是类,char基本数据类型. 在java中有三个类负责对字符的操作 ...
- Java中的自动拆箱装箱(Autoboxing&Unboxing)
一.基本类型打包器 1.基本类型:long.int.double.float.boolean 2.类类型:Long.Integer.Double.Float.Boolean 区别:基本类型效率更高,类 ...
- 享元模式(FlyWeight Pattern)及其在java自动拆箱、自动装箱中的运用
本文主要从三个方面着手,第一:简要介绍享元模式.第二:享元模式在基本类型封装类中的运用以Integer为例进行阐述.第三:根据第一.第二的介绍,进而推出java是如何实现自动拆箱与装箱的. 第一:简要 ...
- java 自动拆箱 自动装箱
自动装箱的定义就是 基本数据类型赋值给包装类型, 拆箱则相反. Integer integer = 122; // 自动装箱 int num = integer; //自动拆箱 想看一下源码是怎么 ...
- JAVA高级特性--自动拆箱-装箱,枚举类型
基本数据类型转换为引用类型对象 一个自动装箱的例子 Integer i=10; 相当于 Integer i=new Integer(10); 一个自动拆箱的例子 Integer m=10; int n ...
- JavaWeb_静态导入、自动拆箱/装箱
静态导入用于简化程序对类静态属性和方法的调用. 语法 import static 包名.类名.静态属性|静态方法|* 例如 import static java.lang.System.out imp ...
- java 自动拆箱
Integer a0 = ; Integer a1 = ; Integer b0 = ; Integer b1 = ; ; System.out.println(a0 == a1); >> ...
- int和Integer的自动拆箱/装箱相关问题
java中为没一种基本类型都提供相应的包装类型. byte,short,char,int,long,float,double和boolean Byte,Short,Character,Integer, ...
随机推荐
- excel处理经纬度
=LEFT(A1,FIND("°",A1)-1)*1+MID(A1,FIND("°",A1)+1,2)/60+MID(A1,FIND("′" ...
- 【BZOJ2400】Optimal Marks
题意 定义无向图中的一条边的值为:这条边连接的两个点的值的异或值. 定义一个无向图的值为:这个无向图所有边的值的和. 给你一个有 \(n\) 个结点 \(m\) 条边的无向图.其中的一些点的值是给定的 ...
- OIer常见问题与错误总结
作为一名OIer,无论是一名刚入门的蒟蒻,还是叱诧风云的神犇,相信都会难免去犯一些错误(废话不犯错误岂不是都满分了(ノへ ̄.).在这里总结了一些OIer常见易犯的错误,与大家共勉. 1.正常错误 可能 ...
- spring监听器+定时任务
背景:在原SSM项目中,拟定在每晚的23:59:59执行一个批处理任务. 设计思路:用jdk自带的定时器触发任务执行,设置下次执行间隔为24小时.定时任务由spring的监听器去启动. jdk版本:1 ...
- P 1029 旧键盘
转跳点:
- SpringBoot实现OAuth2认证服务器
一.最简单认证服务器 1. pom依赖 <dependency> <groupId>org.springframework.boot</groupId> <a ...
- 8 ~ express ~ 基于数据库的验证
1,首先 在router/api.js 中引入数据库定义好的模型 /models/User.js var User = require('../models/User') //User返回的是一个构 ...
- 16 react 发送异步请求获取数据 和 使用Redux-thunk中间件进行 ajax 请求发送
1.发送异步请求获取数据 1.引入 axios ( 使用 yarn add axios 进行安装 ) import axios from 'axios'; 2. 模拟 在元素完成挂载后加载数据 并初始 ...
- scanf与gets
gets函数为什么不能读取字符就往下运行了 这里有一个共性的问题,就是 scanf 输入后,会遗留一个回车符,传递到下面的输入语句: 回车符就会被下面的输入语句接收,而结束了输入,这里就是一个错误的值 ...
- 运行xv6
我们使用Qemu在Ubuntu下运行 1. 安装Qemu sudo apt-get install qemu 执行 qemu-system-i386 ,如果弹出Qemu界面说明安装成功了 2. 编译x ...