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

Java数据结构之装箱拆箱

装箱和拆箱

也叫装包拆包,装包是把那八种基本数据类型转换为它的包装类,拆包则相反

上面这俩种方式都是装包,下面是它的字节码文件

用到了Integer的ValueOf方法:

就是返回了一个Integer类的对象,把它的value属性设置成了指定的值。

下面是拆包:

用到了intValue方法:

自动装箱拆箱,显式装箱拆箱

这是自动装箱拆箱

这是显式装箱和拆箱

看一下八种数据类型自动装箱的源码:

//boolean原生类型自动装箱成Booleanpublic static Boolean valueOf(boolean b) {return (b ? TRUE : FALSE);}//byte原生类型自动装箱成Bytepublic static Byte valueOf(byte b) {final int offset = 128;return ByteCache.cache[(int)b + offset];}//short原生类型自动装箱成Shortpublic static Short valueOf(short s) {final int offset = 128;int sAsInt = s;if (sAsInt >= -128 && sAsInt <= 127) { // must cachereturn ShortCache.cache[sAsInt + offset];}return new Short(s);}//char原生类型自动装箱成Characterpublic static Character valueOf(char c) {if (c <= 127) { // must cachereturn CharacterCache.cache[(int)c];}return new Character(c);}//int原生类型自动装箱成Integerpublic static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}//long原生类型自动装箱成Longpublic static Long valueOf(long l) {final int offset = 128;if (l >= -128 && l <= 127) { // will cachereturn LongCache.cache[(int)l + offset];}return new Long(l);}//double原生类型自动装箱成Doublepublic static Double valueOf(double d) {return new Double(d);}//float原生类型自动装箱成Floatpublic static Float valueOf(float f) {return new Float(f);}

可以发现除了Double和Float类型只是new一个新对象,其他类型都用到了cache方法,也就是用到了缓存策略

为什么使用缓存策略:缓存中的对象都是经常使用的,可以避免每次装箱都new一个新的对象,导致浪费内存

而double和float没有经常使用的,所以就没必要用到缓存策略

有趣的面试题

结果是:true false

这是因为缓存中的Integer数据的范围是从-128到127,100在此范围内,所以不用产生新对象,200不再此范围内,所以每次装箱都要new一个新对象

包装类的比较

这是因为:

当==左右两边是包装类的引用时,比较的是指向的对象

当==左右俩边有算数运算符时,比较的是对象的value属性,即数值

包装类的equals方法比较的也是数值,如下:

相关文章:

Java数据结构之装箱拆箱

装箱和拆箱 也叫装包拆包&#xff0c;装包是把那八种基本数据类型转换为它的包装类&#xff0c;拆包则相反 上面这俩种方式都是装包&#xff0c;下面是它的字节码文件 用到了Integer的ValueOf方法&#xff1a; 就是返回了一个Integer类的对象&#xff0c;把它的value属性设置成…...

各版本 操作系统 对 .NET Framework 与 .NET Core 支持

有两种类型的受支持版本&#xff1a;长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息&#xff0c;请参阅 .N…...

Golang 线程安全与 sync.Map

前言 线程安全通常是指在并发环境下&#xff0c;共享资源的访问被适当地管理&#xff0c;以防止竞争条件&#xff08;race conditions&#xff09;导致的数据不一致 Go语言中的线程安全可以通过多种方式实现 实现方式 互斥锁&#xff08;Mutexes&#xff09; Go的sync包提供…...

1.2 Hadoop概述

小肥柴的Hadoop之旅 1.2 Hadoop概述 目录1.2 Hadoop概述1.2.1 回归问题1.2.2 Google的三篇论文1.2.3 Hadoop的诞生过程1.2.4 Hadoop特点简介 参考文献和资料 ) 目录 1.2 Hadoop概述 1.2.1 回归问题 通过前一篇帖子的介绍&#xff0c;特别是问题思考部分的说明&#xff0c;我…...

Adams许可管理安全控制策略

随着全球信息化的快速发展&#xff0c;信息安全和许可管理问题日益凸显。在这场无形的挑战中&#xff0c;Adams许可管理安全控制策略以其卓越的性能和可靠性&#xff0c;引领着解决这类问题的新潮流。 Adams许可管理安全控制策略是一种全方位、多层次的安全控制方案&#xff0…...

无人地磅系统|内蒙古中兴首创无人地磅和远程高效管理的突破

走进标杆企业&#xff0c;感受名企力量&#xff0c;探寻学习优秀企业领先之道。 本期要跟砼行们推介的标杆企业是内蒙古赤峰市砼行业的龙头企业&#xff1a;赤峰中兴首创混凝土搅拌有限责任公司&#xff08;以下简称为中兴首创&#xff09;。 中兴首创成立于2011年初&#xff…...

【SpringCloud】7、Spring Cloud Gateway限流配置

1、限流介绍 Spring Cloud Gateway 的限流配置主要涉及到令牌桶算法的实现。令牌桶算法可以对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机。 在 Spring Cloud Gateway 中,官方提供了 RequestRateLimiterGatewayFi…...

【gRPC学习】使用go学习gRPC

个人博客:Sekyoro的博客小屋 个人网站:Proanimer的个人网站 RPC是远程调用,而google实现了grpc比较方便地实现了远程调用,gRPC是一个现代的开源远程过程调用(RPC)框架 概念介绍 在gRPC中&#xff0c;客户端应用程序可以直接调用另一台计算机上的服务器应用程序上的方法&#…...

C语言中常用的字符串函数(strlen、sizeof、sscanf、sprintf、strcpy)

C语言中常用的字符串函数 文章目录 C语言中常用的字符串函数1 strlen函数2 sizeof函数2.1 sizeof介绍2.2 sizeof用法 3 sscanf函数3.1 sscanf介绍3.2 sscanf用法3.3 sscanf高级用法 4 sprintf函数4.1 背景4.2 sprintf用法 5 strcpy函数5.1 strcpy介绍5.1 strcpy用法 1 strlen函…...

域名解析服务器:连接你与互联网的桥梁

域名解析服务器&#xff1a;连接你与互联网的桥梁 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;我们将探讨一个网络世界中至关重要却鲜为人知的角…...

理论物理在天线设计和射频电路设计中的应用

理论物理的基本原理可以应用于电路中的电磁场分析和电磁波传播问题&#xff0c;例如天线设计和射频电路设计。通过应用麦克斯韦方程组和电磁波传播理论&#xff0c;可以优化电路的性能&#xff0c;提高天线的辐射效率和射频电路的传输效率。麦克斯韦方程组是描述电磁场行为的基…...

MySql01:初识

1.mysql数据库2.配置环境变量3. 列的类型和属性&#xff0c;索引&#xff0c;注释3.1 类型3.2 属性3.3 主键(主键索引)3.4 注释 4.结构化查询语句分类&#xff1a;5.列类型--表列类型设置 1.mysql数据库 数据库&#xff1a; ​ 数据仓库&#xff0c;存储数据&#xff0c;以前我…...

Python——运算符

num 1 num 1 print("num1:", num) num - 1 print("num-1:", num) num * 4 print("num*4:", num) num / 4 print("num/4:", num) num 3 num % 2 print("num%2:", num) num ** 2 print("num**2:", num) 运行结果…...

赋能软件开发:生成式AI在优化编程工作流中的应用与前景

随着人工智能&#xff08;AI&#xff09;技术的快速发展&#xff0c;特别是生成式AI模型如GPT-3/4的出现&#xff0c;软件开发行业正经历一场变革&#xff0c;这些模型通过提供代码生成、自动化测试和错误检测等功能&#xff0c;极大地提高了开发效率和软件质量。 本文旨在深入…...

通过盲对抗性扰动实时击败基于DNN的流量分析系统

文章信息 论文题目&#xff1a;Defeating DNN-Based Traffic Analysis Systems in Real-Time With Blind Adversarial Perturbations 期刊&#xff08;会议&#xff09;&#xff1a;30th USENIX Security Symposium 时间&#xff1a;2021 级别&#xff1a;CCF A 文章链接&…...

【Project】TPC-Online Module (manuscript_2024-01-07)

PRD正文 一、概述 本模块实现隧道点云数据的线上汇总和可视化。用户可以通过注册和登录功能进行身份验证&#xff0c;然后上传原始隧道点云数据和经过处理的数据到后台服务器。该模块提供数据查询、筛选和可视化等操作&#xff0c;同时支持对指定里程的分段显示和点云颜色更改…...

通过cpolar在公网访问本地网站

通过cpolar可以轻松将本地网址映射到公网进行访问&#xff0c;下面简要介绍一下实现步骤。 目录 一、cpolar下载 二、安装 三、使用 3.1 登录 3.2 创建隧道 一、cpolar下载 cpolar官网地址&#xff1a;cpolar - secure introspectable tunnels to localhost 通过QQ邮箱…...

Prokka: ubuntu安装的时候出现错误

[14:10:57] Running: cat /app/prokka_result/ref_file/ref_file.HAMAP.hmm.tmp.77.faa | parallel --gnu --plain -j 2 --block 108208 --recstart ‘>’ --pipe hmmscan --noali --notextw --acc -E 1e-09 --cpu 1 /opt/prokka/db/hmm/HAMAP.hmm /dev/stdin > /app/pro…...

安全防御之密码技术

密码学是信息安全的基础技术之一&#xff0c;是达到信息系统安全等级保护要求的核心技术支持&#xff0c;在身份验证、访问控制、文件加密、数据加密和安全传输中都得到广泛应用。其核心目标是保证信息的机密性、完整性和可用性。 密码学包括加密和解密两个部分。一般过程是&am…...

一文读懂「多模态大模型」

​ 学习资源 5-多模态大模型一统NLP和CV 1.多模态大模型的基本原理 2.常见的多模态大模型 https://www.bilibili.com/video/BV1NN41177Zp?p5&vd_sourcef27f081fc77389ca006fcebf41bede2d 3.多模态大模型如_哔哩哔哩_bilibili 强强联手&#xff01;科大讯飞和中科院终于把【…...

3步掌握League Akari:高效智能的英雄联盟本地自动化工具

3步掌握League Akari&#xff1a;高效智能的英雄联盟本地自动化工具 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit League Akari是一款基于英…...

如何让经典DirectX游戏在现代Windows上完美运行:DDrawCompat终极兼容解决方案

如何让经典DirectX游戏在现代Windows上完美运行&#xff1a;DDrawCompat终极兼容解决方案 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.co…...

绩效考核的量化迷思:如何衡量不可直接测量的技术贡献

一、量化绩效考核的困境&#xff1a;软件测试的“隐形”价值在软件行业的绩效考核体系中&#xff0c;量化指标似乎成了“公平”与“高效”的代名词。代码行数、Bug数量、测试用例覆盖率……这些清晰可统计的数字&#xff0c;被当作衡量技术人员贡献的核心标尺。然而&#xff0c…...

uni-number-box深度解析:从基础属性到高级双向绑定实战

1. uni-number-box基础入门&#xff1a;从零开始玩转数字输入框 第一次接触uni-number-box时&#xff0c;我也觉得这不就是个简单的数字加减控件吗&#xff1f;直到在电商项目中真正用起来&#xff0c;才发现这个看似简单的组件藏着不少门道。uni-number-box是uni-app框架提供的…...

ComfyUI-Impact-Pack完整安装指南:为什么你的V8版本功能不全?终极解决方案

ComfyUI-Impact-Pack完整安装指南&#xff1a;为什么你的V8版本功能不全&#xff1f;终极解决方案 【免费下载链接】ComfyUI-Impact-Pack Custom nodes pack for ComfyUI This custom node helps to conveniently enhance images through Detector, Detailer, Upscaler, Pipe, …...

CDMA功率测量技术与Agilent 8960系统优化

1. CDMA功率测量技术背景与挑战在cdma2000移动通信系统中&#xff0c;精确的功率控制是实现高质量通信的核心技术之一。与GSM等采用固定功率等级的系统不同&#xff0c;CDMA要求移动台(MS)能够在80dB动态范围内精确调整发射功率。这种需求源于CDMA系统的自干扰特性——所有用户…...

Sora 2训练Pipeline为何突然兼容Gaussian Splatting?:逆向解析OpenAI最新隐式-显式混合表征专利(US20240177892A1)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2 Gaussian Splatting 技术融合背景 Sora 2 作为 OpenAI 推出的下一代视频生成模型&#xff0c;已深度集成高斯点绘&#xff08;Gaussian Splatting&#xff09;技术以提升动态场景的几何保真度…...

降AI提示词大全!10个prompt让AI输出人类味+嘎嘎降AI兜底!

降AI提示词大全&#xff01;10个prompt让AI输出人类味嘎嘎降AI兜底&#xff01; 用 ChatGPT、DeepSeek、Kimi、豆包写论文最大的痛是&#xff1a;写得快但被检测判 AI、改起来比自己写还累。其实在写作环节就能预防一部分 AI 痕迹&#xff0c;靠的是会写降 AI 提示词。 这篇先给…...

如何在5分钟内完成BepInEx安装:游戏插件框架终极指南

如何在5分钟内完成BepInEx安装&#xff1a;游戏插件框架终极指南 【免费下载链接】BepInEx Unity / XNA game patcher and plugin framework 项目地址: https://gitcode.com/GitHub_Trending/be/BepInEx BepInEx是一款功能强大的游戏插件框架&#xff0c;专为Unity Mono…...

别再到处找靶场了!一个OWASP BWA虚拟机搞定30+个Web漏洞环境(附SSH连接与MySQL密码修改指南)

OWASP BWA&#xff1a;一站式Web安全实战环境的终极解决方案 对于Web安全初学者和爱好者来说&#xff0c;寻找合适的漏洞靶场往往比学习技术本身更令人头疼。你是否也曾在不同平台间反复切换&#xff0c;下载各种零散的虚拟机镜像&#xff0c;只为练习一个简单的SQL注入或XSS漏…...