最易理解的自动拆箱和装箱
来源:互联网 发布:魂斗罗游戏源码 编辑:程序博客网 时间:2024/06/10 19:55
自动拆箱和装箱时JDK1.5的新特性。
- 目的及作用
就是用来进行基本数据类型(long、int、short、byte、double、float、boolean、char)和包装类型(Long、Integer、Short、Byte、Double、Float、Boolean、Character)之间的转换。
自动装箱意思就是把基本数据类型的值赋给包装类型(基本数据类型——>包装类型)。
反之自动拆箱意思就是把包装类型的值赋给基本数据类型(包装类型——>基本数据类型)。
具体是怎么做到的可以去看源码,小的才疏学浅只能简单的说是包装类型使用了两个方法:
- 使用valueOf()的方法对基本数据类型进行包装。
- 使用intVlaue()的方法可以得到基本数据类型。
Integer integer = new Integer(23);int i = integer.intVlaue();
对于自动拆箱和装箱还有特别需要记住的就是包装类的一个特性,下面随小的来看一个特别有意思的程序。
public static void main(String[] args) { Integer integer1 = 100; Integer integer2 = 100; System.out.println(integer1 == integer2); Integer integer3 = 1000; Integer integer4 = 1000; System.out.println(integer3 == integer4); }
对于上面这段代码你们认为最终输出的结果会是什么呢?
下面揭晓答案:
那么为什么会出现这样的情况呢?
这是因为包装类的valueOf()方法在作怪!!! 当进行基本数据类型转成包装类型(即自动装箱)时,Byte、Integer和Long这些包装类中缓存了一个-128~+127之间的对象,如果对象值在这个范围之内,则直接返回缓存的对象,只有当缓存中没有的时候也就是不在-128~+127之间,那么会再去创建一个对象。
再来包装类的缓存:
Boolean:(全部缓存)
Byte:(全部缓存)
Character(<= 127缓存)
Short(-128 — 127缓存)
Long(-128 — 127缓存)
Integer(-128 — 127缓存)
Float(没有缓存)
Doulbe(没有缓存)
阅读全文
0 0
- 最易理解的自动拆箱和装箱
- 我理解的自动装箱和拆箱
- 深入理解Java的自动装箱和拆箱
- JavA的自动装箱和拆箱
- Java的自动拆箱和装箱
- java的自动装箱和拆箱
- 装箱和拆箱的理解
- 黑马程序员——自动装箱 拆箱的理解
- 对数据类型的理解及自动装箱拆箱等
- 自动装箱和拆箱
- 自动装箱和拆箱
- 自动拆箱和装箱
- 自动拆箱和装箱
- 自动装箱和拆箱
- 自动装箱和拆箱
- Java自动装箱和自动拆箱的陷阱
- java的自动装箱和自动拆箱
- Java 自动装箱和自动拆箱注意的问题
- 在Azure上部署微服务项目的经验分享
- linux不同类型包的安装
- RUBER: An Unsupervised Method for Automatic Evaluation of Open-Domain Dialog Systems
- 关于MySQL 1045等错误问题
- angular 路由跳转读取参数
- 最易理解的自动拆箱和装箱
- fusionCharts——拆线图
- Leetcode--268. Missing Number
- eclipse项目名称
- RecyclerView和listview的比较
- 链表中环的入口结点
- 大话 elf 格式! -- 共享elf 格式
- 各个JSON技术的比较(Jackson,Gson,Fastjson)的对比
- Linux 搭建 tftp 服务器