包装类型与基本类型的装箱与拆箱操作
文章目录
- 概述
- Boolean 与 boolean
- Character 与 char
- Byte 与 byte
- Short 与 short
- Integer 与 int
- Float 与 float
- Double 与 double
- Long 与 long
- 总结
概述
基本类型与包装类型,存在相互转化的关系。
- 基本类型转为包装类型这个过程,被称之为装箱
- 包装类型转为基本类型这个过程,被称之为拆箱
Boolean 与 boolean
- 装箱操作通过
Boolean.valueOf()
来完成 - 拆箱操作通过
Boolean.booleanValue()
来完成
注意,Boolean
只有两个取值,所以通过装箱操作得到的值,都是 Boolean
中的静态变量 TRUE
或者 FALSE
。
Character 与 char
- 装箱操作通过
Character.valueOf()
来完成 - 拆箱操作通过
Character.charValue()
来完成
注意,Character
中存在一个内部缓存类 CharacterCache
,缓存范围是 Ascii
码小于 127
的所有字符,即包含了所有的英文字母与半角符号。示例如下:
Character c = '@';
Character c1 = '@';
//因为有缓存,输出 true
System.out.println(c == c1);
Character c2 = '二';
Character c3 = '二';
//中文字符不在缓存范围内,所以输出 false
System.out.println(c2 == c3);
Byte 与 byte
- 装箱操作通过
Byte.valueOf()
来完成 - 拆箱操作通过
Byte.byteValue()
来完成
注意,Byte
类中存在一个内部缓存类 ByteCache
,缓存范围正好是 byte
类型的取值范围: -128~127
。当遇到装箱操作时,将自动从此内部缓存类中获取,示例如下:
Byte b = 10;
Byte b2 = 10;
//因为有缓存,所以这里输出 true
System.out.println(b == b2);
Short 与 short
- 装箱操作通过
Short.valueOf()
来完成 - 拆箱操作通过
Short.shortValue()
来完成
与 Byte
类似,Short
类中也存在内部缓存类 ShortCache
,缓存范围也是 -128~127
。当遇到此缓存范围中的装箱操作时,将自动从此内部缓存类中获取,示例如下:
Short s0 = 127;
Short s1 = 127;
//因为有缓存,所以这里输出 true
System.out.println(s0 == s1);
Short s2 = 128;
Short s3 = 128;
//这里超出了缓存范围,所以都去创建了新的对象,故输出 false
System.out.println(s2 == s3);
Integer 与 int
- 装箱操作通过
Integer.valueOf()
来完成 - 拆箱操作通过
Integer.intValue()
来完成
注意,Integer
中也存在内部缓存类,用法也与上面类似,但不同的是,Integer
的缓存范围可以自定义,通过指定参数来进行设置。
Float 与 float
- 装箱操作通过
Float.valueOf()
来完成 - 拆箱操作通过
Float.floatValue()
来完成
Double 与 double
- 装箱操作通过
Double.valueOf()
来完成 - 拆箱操作通过
Double.doubleValue()
来完成
Long 与 long
- 装箱操作通过
Long.valueOf()
来完成 - 拆箱操作通过
Long.longValue()
来完成
注意,Long
中也存在内部缓存类,用法与 Byte
类似。
总结
- 装箱操作,一般都是调用包装类的
valueOf()
方法来实现的,例如Double.valueOf()
- 拆箱操作,一般都是调用包装类的
xxxVluae()
方法来实现的,例如Long.longValue()
Boolean
、Character
、Byte
、Short
、Integer
、Long
类型内部都有缓存机制来对一定范围内的值进行缓存操作Boolean
类通过TRUE
和FALSE
两个静态变量来实现装箱时的缓存读取操作Character
、Byte
、Short
、Integer
、Long
都是通过内部的缓存类来实现装箱时的缓存读取操作的Character
的缓存范围是Ascii
码小于 127 的字符Byte
、Short
、Integer
、Long
的缓存范围都是-128~127
Integer
可以通过修改指定参数来修改缓存范围
包装类型与基本类型的装箱与拆箱操作相关推荐
- 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]
一.栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它们之间的根本区别在于它们在内存中的存储方式..NET使用两种不同的物理内存块来存储数据-栈和托管堆.如下图所示: 值 ...
- C# 如何避免装箱和拆箱操作
Net的类型分为两种,一种是值类型,另一种是引用类型.这两个类型的本质区别,值类型数据是分配在栈中,而引用类型数据分配在堆上.那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的 ...
- “装箱”和“拆箱”操作(有详细的代码案例和说明);
目录 C# 的"装箱"和"拆箱": 1.装箱 2.拆箱 使用拆箱操作时出现的错误 C# 的"装箱"和"拆箱": C#语言 ...
- 【JavaEE进阶系列 | 从小白到工程师】基本类型包装类的使用,装箱以及拆箱与parseInt方法
一.包装类概述 Java中的数据类型分为基本类型和引用类型两大类,使用基本类型可以提升效率 但是java是面向对象的语言,java的设计思想是一切皆对象,而基本数据类型不是对象,于是 Java为每种基 ...
- .NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱
.NET六大剑客:栈.堆.值类型.引用类型.装箱和拆箱 一."堆","栈"专区 这两个字我相信大家太熟悉了,甚至于米饭是什么?不知道..."堆&quo ...
- [CLR via C#]5.3 值类型的装箱和拆箱
原文:[CLR via C#]5.3 值类型的装箱和拆箱 在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管 ...
- 浅谈.NET中的类型和装箱、拆箱原理
谈到装箱拆箱,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么建议你花点时间看看楼主这篇文章 1. .NET中的类型 为了 ...
- 1.1 Java包装类、装箱和拆箱
在 Java 的设计中提倡一种思想,即一切皆对象.但是从数据类型的划分中,我们知道 Java 中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为每种基本 ...
- [C#] C# 知识回顾 - 装箱与拆箱
装箱与拆箱 目录 生活中的装箱与拆箱 C# 的装箱与拆箱 值类型和引用类型 装箱 拆箱 读者见解 生活中的装箱与拆箱 我们习惯了在网上购物,这次你想买本编程书 -- <C 语言从入门到放弃 ...
最新文章
- 学习下如何统计【0-9】在任意给定数中出现的次数
- 创新正当时 -「Innovation 2021」网易应用创新开发者大赛决赛十强正式集结
- 为什么现在辞职的年轻教师越来越多?
- spring配置数据源错误记录
- CentOS7的初始配置
- EF 数据库连接约定(Connection String Conventions in Code First)
- JDK API下载
- 化工虚拟仿真实验室实训操作软件搭建
- android系统设置默认字体,如何获取Android设备的默认字体?
- 电脑上微信怎么双开_【干货分享】电脑版微信怎么双开、多开~
- Istio 东西向流量管理
- pandas入门与数据准备与简单筛选统计
- 我讨厌单元测试:滕振宇谈如何进行单元测试
- Origin的基础实验数据处理
- 区分联通、移动、电信 号码的策略
- Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中
- java程序设计 c语言_C语言和Java编程有什么区别?
- Your build settings specify a provisioning profile with the UUID, no provisioning profile was
- iPhone 忘记了密码怎么办?
- 企业网站建设需要多少钱?
热门文章
- shell中返回值是1为真还是假_shell脚本中判断上一个命令是否执行成功
- 京东自动下单软件_黄牛软件自动下单秒杀商品 警方用科技手段打击
- numpy 归一化_NumPy 数据归一化、可视化
- linux重装hal服务安装,linux ubuntu 安装微信客户端
- 本地tomcat启动war包_「shell脚本」懒人运维之自动升级tomcat应用(war包)
- 网站html标签如何优化,网站HTML标签优化教程
- fedora操作系统优缺点_不同类型的操作系统的优缺点
- int?id与id??1 的意思
- html的数据类型有哪些,数据库数据类型有哪些
- 卡顿严重_微软Win 10游戏模式致《使命召唤:战区》等游戏出现严重卡顿现象