文章目录

  • 概述
  • 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()
  • BooleanCharacterByteShortIntegerLong 类型内部都有缓存机制来对一定范围内的值进行缓存操作
    • Boolean 类通过 TRUEFALSE 两个静态变量来实现装箱时的缓存读取操作
    • CharacterByteShortIntegerLong 都是通过内部的缓存类来实现装箱时的缓存读取操作的
    • Character 的缓存范围是 Ascii 码小于 127 的字符
    • ByteShortIntegerLong 的缓存范围都是 -128~127
    • Integer 可以通过修改指定参数来修改缓存范围

包装类型与基本类型的装箱与拆箱操作相关推荐

  1. 栈和托管堆/值类型和引用类型/强制类型转换/装箱和拆箱[C#]

    一.栈和托管堆 通用类型系统(CTS)区分两种基本类型:值类型和引用类型.它们之间的根本区别在于它们在内存中的存储方式..NET使用两种不同的物理内存块来存储数据-栈和托管堆.如下图所示:     值 ...

  2. C# 如何避免装箱和拆箱操作

    Net的类型分为两种,一种是值类型,另一种是引用类型.这两个类型的本质区别,值类型数据是分配在栈中,而引用类型数据分配在堆上.那么如果要把一个值类型数据放到堆上,就需要装箱操作;反之,把一个放在堆上的 ...

  3. “装箱”和“拆箱”操作(有详细的代码案例和说明);

    目录 C# 的"装箱"和"拆箱": 1.装箱 2.拆箱 使用拆箱操作时出现的错误 C# 的"装箱"和"拆箱": C#语言 ...

  4. 【JavaEE进阶系列 | 从小白到工程师】基本类型包装类的使用,装箱以及拆箱与parseInt方法

    一.包装类概述 Java中的数据类型分为基本类型和引用类型两大类,使用基本类型可以提升效率 但是java是面向对象的语言,java的设计思想是一切皆对象,而基本数据类型不是对象,于是 Java为每种基 ...

  5. .NET六大剑客:栈、堆、值类型、引用类型、装箱和拆箱

    .NET六大剑客:栈.堆.值类型.引用类型.装箱和拆箱 一."堆","栈"专区 这两个字我相信大家太熟悉了,甚至于米饭是什么?不知道..."堆&quo ...

  6. [CLR via C#]5.3 值类型的装箱和拆箱

    原文:[CLR via C#]5.3 值类型的装箱和拆箱 在CLR中为了将一个值类型转换成一个引用类型,要使用一个名为装箱的机制. 下面总结了对值类型的一个实例进行装箱操作时内部发生的事: 1)在托管 ...

  7. 浅谈.NET中的类型和装箱、拆箱原理

    谈到装箱拆箱,大概的意思就是值类型和引用类型的相互转换呗---值类型到引用类型叫装箱,反之则叫拆箱.这当然没有问题,可是你只知道这么多,那么建议你花点时间看看楼主这篇文章 1. .NET中的类型 为了 ...

  8. 1.1 Java包装类、装箱和拆箱

    在 Java 的设计中提倡一种思想,即一切皆对象.但是从数据类型的划分中,我们知道 Java 中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?于是 Java 为每种基本 ...

  9. [C#] C# 知识回顾 - 装箱与拆箱

    装箱与拆箱 目录 生活中的装箱与拆箱 C# 的装箱与拆箱 值类型和引用类型 装箱 拆箱 读者见解 生活中的装箱与拆箱    我们习惯了在网上购物,这次你想买本编程书 -- <C 语言从入门到放弃 ...

最新文章

  1. 学习下如何统计【0-9】在任意给定数中出现的次数
  2. 创新正当时 -「Innovation 2021」网易应用创新开发者大赛决赛十强正式集结
  3. 为什么现在辞职的年轻教师越来越多?
  4. spring配置数据源错误记录
  5. CentOS7的初始配置
  6. EF 数据库连接约定(Connection String Conventions in Code First)
  7. JDK API下载
  8. 化工虚拟仿真实验室实训操作软件搭建
  9. android系统设置默认字体,如何获取Android设备的默认字体?
  10. 电脑上微信怎么双开_【干货分享】电脑版微信怎么双开、多开~
  11. Istio 东西向流量管理
  12. pandas入门与数据准备与简单筛选统计
  13. 我讨厌单元测试:滕振宇谈如何进行单元测试
  14. Origin的基础实验数据处理
  15. 区分联通、移动、电信 号码的策略
  16. Python网络爬虫:爬取CSDN热搜数据 并保存到本地文件中
  17. java程序设计 c语言_C语言和Java编程有什么区别?
  18. Your build settings specify a provisioning profile with the UUID, no provisioning profile was
  19. iPhone 忘记了密码怎么办?
  20. 企业网站建设需要多少钱?

热门文章

  1. shell中返回值是1为真还是假_shell脚本中判断上一个命令是否执行成功
  2. 京东自动下单软件_黄牛软件自动下单秒杀商品 警方用科技手段打击
  3. numpy 归一化_NumPy 数据归一化、可视化
  4. linux重装hal服务安装,linux ubuntu 安装微信客户端
  5. 本地tomcat启动war包_「shell脚本」懒人运维之自动升级tomcat应用(war包)
  6. 网站html标签如何优化,网站HTML标签优化教程
  7. fedora操作系统优缺点_不同类型的操作系统的优缺点
  8. int?id与id??1 的意思
  9. html的数据类型有哪些,数据库数据类型有哪些
  10. 卡顿严重_微软Win 10游戏模式致《使命召唤:战区》等游戏出现严重卡顿现象