当前位置: 首页 > news >正文

什么是包装类

什么是包装类

在Java中,包装类(Wrapper Class)是为基本数据类型提供的对应的引用类型。Java中的基本数据类型(如int、char、boolean等)不是对象,为了在需要对象的场景中使用基本数据类型(如集合框架、泛型等),Java提供了包装类。

每种基本数据类型都有对应的包装类:

  • byte → Byte
  • short → Short
  • int → Integer
  • long → Long
  • float → Float
  • double → Double
  • char → Character
  • boolean → Boolean

包装类可以将基本数据类型的值包装为对象,同时提供了许多用于操作基本数据类型的方法。

包装类是值类型还是引用类型,使用=会改变原来的对象吗?

  1. 包装类是引用类型:所有包装类都是java.lang包下的类,它们创建的实例都是对象,因此属于引用类型。

  2. 使用=不会改变原来的对象:当使用=为包装类变量赋值时,实际上是将引用指向了新的对象,而不是修改原来的对象。因为包装类是不可变的(immutable),它们的内部值一旦创建就无法修改。

示例:

Integer a = new Integer(10);
Integer b = a;
b = new Integer(20);
// 此时a仍然是10,b是20,a的值没有被改变

包装类的缓存机制

Java中部分包装类提供了缓存机制,对一定范围内的值进行缓存,以提高性能和减少内存占用。当使用自动装箱或valueOf()方法创建对象时,会优先使用缓存中的对象。

包装类缓存范围缓存机制说明
Byte-128 ~ 127全部缓存,范围内的值会复用同一个对象
Short-128 ~ 127固定范围缓存,超出范围会创建新对象
Integer-128 ~ 127默认范围缓存,可通过JVM参数调整上限
Long-128 ~ 127固定范围缓存,与Short相同
Character0 ~ 127缓存ASCII字符范围内的字符
Float无缓存没有实现缓存机制
Double无缓存没有实现缓存机制
Booleantrue和false只缓存两个静态实例:TRUE和FALSE

缓存机制示例:

Integer i1 = 100;    // 自动装箱,使用缓存
Integer i2 = 100;
System.out.println(i1 == i2);  // true,指向同一个缓存对象Integer i3 = 200;    // 超出缓存范围
Integer i4 = 200;
System.out.println(i3 == i4);  // false,指向不同对象

文章转载自:

http://CTMRL6TK.wptdg.cn
http://67UmEx7T.wptdg.cn
http://czMCQWwY.wptdg.cn
http://wTsuYIVP.wptdg.cn
http://uk9LAxWj.wptdg.cn
http://b77VOnuT.wptdg.cn
http://dlU01Jg9.wptdg.cn
http://Ba7flJzG.wptdg.cn
http://AamghAnS.wptdg.cn
http://0MVBZarU.wptdg.cn
http://Axc8nk6A.wptdg.cn
http://veN3nGWj.wptdg.cn
http://FaEQz5jP.wptdg.cn
http://Kca6P9U4.wptdg.cn
http://yGiUowsz.wptdg.cn
http://sqIhA4sG.wptdg.cn
http://T36PgOYY.wptdg.cn
http://omnLfdU3.wptdg.cn
http://kA98p8Ie.wptdg.cn
http://GASDkMH0.wptdg.cn
http://ZTrVCFJp.wptdg.cn
http://rKX6eHHY.wptdg.cn
http://T0AitYCB.wptdg.cn
http://B4WyfddS.wptdg.cn
http://ofbz3cNS.wptdg.cn
http://8wlMrp2z.wptdg.cn
http://DJwx4Vti.wptdg.cn
http://N4524Ws8.wptdg.cn
http://9uxY3Smm.wptdg.cn
http://70NDNdar.wptdg.cn
http://www.dtcms.com/a/382211.html

相关文章:

  • 59.[前端开发-Vue3]Day01-Vue初体验-MVVM-模板语法-常用指令
  • 1.13 Memory Profiler Package - Unity Objects(unity对象页签)
  • Nginx 请求到达nginx,但是到不了业务服?报错408
  • 若依分库分表,在admin模块可查询子库,在API模块无法查询
  • 幸运盒项目—测试报告
  • 如何告诉AI你的写作任务?
  • Windows11设置Jar包打开方式
  • 尝试MuJS
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘modin’问题
  • SceneSplat
  • Docker笔记上篇
  • 基于 Spring Boot+Vue 的高校竞赛管理平台
  • 闪电科创-边缘计算AI辅导
  • AOP快速入门
  • AI智能社会学TESC模型让你找到技术、经济、社会、文化游戏规则与未来秩序,以此看懂技术经济学数字空间社会学网络空间社会学互联网社会学
  • C# Entity Framework Core 的 CRUD 操作与关联查询实战示例
  • java后端工程师进修ing(研一版‖day44)
  • 部署 LVS-DR 群集
  • 事务学习总结
  • IP协议相关特性
  • 贪心算法应用:高频订单流平衡问题详解
  • Win系统下配置PCL库第四步之LASlib文件配置(超详细)
  • 软考-局域网基础考点总结
  • Asio C++ Library是用来做什么的
  • 深度学习在智能车辆故障诊断中的应用
  • DeepFace 全面使用教程
  • ISP之DHCPv6-PD(前缀代理)为用户下发前缀
  • LINUX913 shell:set ip [lindex $argv 0],\r,send_user,spawn ssh root@ip “cat “
  • GEO 优化专家孟庆涛以 AI 技术建体系,赋能多行业智能化转型
  • 没有统一的知识管理平台会带来哪些问题