Java包装类,128陷阱

news2024/9/19 14:55:14

包装类

基本数据类型都有自己对应的包装类,因为Java本质是面向对象编程的,一切的内容在Java看来都是对象
但是基本数据类型没有类,也没有对象,这样就有了矛盾
所以诞生了基本类型的包装类

基本数据类型:
byte,short,int,long,float,double,boolean,char
对应关系:
byte:Byte
short:Short
int:Integer
long:Long
char:Character
float:Float
double:Double
boolean:boolean

包装类的好处

判空有好处

自动装箱和自动拆箱机制

基本类型和它对应的包装类,是等价的

Integer b = 10;// 不会报错,自动装箱
int a = b;// 不会报错,自动拆箱

自动装箱

// int转为Integer
Integer b = 10;// 不会报错,自动装箱
Integer b = Integer.valueOf(10);// 编译后其实是执行了valueOf方法

所以自动装箱的本质,其实就是自动执行了valueOf方法
包装类和基本类型用equals比较大小时,基本类型会自动装箱

自动拆箱

Integer b = 10;
int a = b;// 不会报错,自动拆箱

包装类和基本类型用==比较大小时,包装类会自动拆箱

自动装箱/拆箱面试常考:128陷阱

关于128陷阱,我之前有一篇博客写的很清楚,甚至分析了源码,有兴趣的读者可以去看看

Java包装类:128陷阱——源码分析

和valueOf相关,也就是说和自动装箱息息相关

Integer类里面会使用IntegerCache类的静态缓存池(是一个数组),Integer的值大小在-128~127之内时,值相等的不同的Integer对象的堆内存地址相同
在这里插入图片描述

Byte,Short,Long类也存在类似的cache机制

面试问到128陷阱,我们应该怎么回答?
在这里插入图片描述

小测验

在这里插入图片描述

答案:
true
true
false
true
true
false
true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1633548.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring AI 来啦,快速上手

Spring AI Spring框架在软件开发领域,特别是在Java企业级应用中,一直扮演着举足轻重的角色。它以其强大的功能和灵活的架构,帮助开发者高效构建复杂的应用程序。而Spring Boot的推出,更是简化了新Spring应用的初始搭建和开发过程…

(超全)python图像处理详细解析(1)

图像处理 skimage包的子模块1.读取图像2.图像灰度处理3.加载程序自带图像4.查看存储路径5.保存图片6.图片信息7.输出小猫图片的G通道中的第20行30行列的像素值8.显示红色单通道图片9.对小猫图片添加椒盐噪声10.高斯去噪11.中值滤波去噪12.随机生成噪声点13.对小猫图像进行裁剪1…

vue报错:Do not mutate vuex store state outside mutation handlers.

vue报错:Do not mutate vuex store state outside mutation handlers. 原因:在vuex store的state外部直接修改了state的值,但是Vuex要求所有的state的修改必须在vuex中,不允许直接咋组件中修改store中的状态,除非通过m…

ios CI/CD 持续集成 组件化专题五-(自动发布私有库-组件化搭建)

一:手动发布私有库总结 手动发布pod私有库,需要进行如下几步操作: 1、修改完代码之后,需要提交代码push到git仓库。 2、给代码打tag。 3、修改podspec文件的version值,使其和设置的tag一直。 4、命令行执行pod repo…

【Java EE】日志框架(SLF4J)与门面模式

文章目录 🍀SLF4j🌳门面模式(外观模式)🌸门面模式的定义🌸门面模式的模拟实现🌸门面模式的优点 🌲关于SLF4J框架🌸引入日志门面 ⭕总结 🍀SLF4j SLF4J不同于其他⽇志框架,它不是⼀个…

分子动力学模拟学习-Gromacs工具链

1、总体流程 在gromacs的使用说明中有一个flow chart,比较简略。以下针对一般体系(非蛋白等领域)进行了一些调整,通用性更强。 在做分子动力学模拟时,其复杂性除了以上各种输入输出文件的操作,另一点就是力…

DataX数据采集流程(项目)

目录 1.CDH介绍 2.ClouderaManager架构 3.服务器 4.dataX架构 5.Datax数据处理流程 6.DataX的使用说明 7.Mysql数据切割 8.Mysql数据导入HDFS 9.查询站点 站点页面如下,可进一步查询导入的数据内容 10.dataX-Web访问页面 创建数据库连接 1.CDH介绍 --(…

pycharm中执行./activate命令激活服务器提示“about_Execution_Policies”

1.虚拟环境创建 环境: 操作系统:Windows11 pycharm: 2022.1.4 python版本:3.9 执行命令安装: pip install virtualenv 执行命令创建虚拟环境: virtualenv venv 2.激活报错 执行命令激活虚拟环境&…

朋友们,帮忙填写一个问卷呀!关于高速服务区一体化车流管理系统的线上调研,急需各位大神的帮助!!!

✌ 作者简介:瑞骏 RUIJUN 📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀 💬 人生格言:没有我不会的语言,没有你过不去的坎儿。💬 &#x…

Kafka Exactly Once 语义实现原理:幂等性与事务消息

01 前言 在现代分布式系统中,确保数据处理的准确性和一致性是至关重要的。Apache Kafka,作为一个广泛使用的流处理平台,提供了强大的消息队列和流处理功能。随着业务需求的增长,Kafka 的事务消息功能应运而生,它允许应…

cocos-lua资源管理

本文介绍cocos-lua项目的资源管理和工作流,适用人群包括初学者和有经验开发者,故读者可根据自己的需要有选择性的查阅自己需要的内容,下文以ccs代指Cocos Studio 一.简单案例解析 下文通过介绍一个简单demo,介绍合图和资源目录结…

React Router 路由配置数组配组持久化

在一些特定场景下,你可能需要将路由配置数组进行持久化,例如从后端动态加载路由配置或根据用户权限动态生成路由配置。这时,持久化路由配置数组就很有用,可以避免每次应用启动时重新获取或计算路由配置。 持久化路由配置数组的步骤如下: 定义路由配置数组 首先,你需要定义一…

每日一题(力扣55):跳跃游戏--贪心

刚开始像这道题&#xff0c;想的是这么从当前可以走的那几步中选择一步&#xff0c;所以一坨屎一样的代码 class Solution { public:bool canJump(vector<int>& nums) {int nnums.size();int step0;int u0;int u_max0;int step_size0;int max_size0;int loci0;while…

前端vue如何生成二维码

有时候有需要链接直接生成二维码在手机上看的需求&#xff0c;比如下载&#xff0c;比如信息&#xff0c;比如excel 下面先引入包 import QRCode from qrcode; 然后上代码 // 将res转换成二维码const qrCodeData JSON.stringify(res); // 将res转换为字符串作为二维码数据// …

基于Springboot的水产养殖系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的水产养殖系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

php7.4在foreach中对使用数据使用无法??[]判读,无法使用引用传递

代码如下图&#xff1a;这样子在foreach中是无法修改class_history的。正确的应该是去掉??[]判断。 public function actionY(){$array [name>aaa,class_history>[[class_name>一班,class_num>1],[class_name>二班,class_num>2]]];foreach ($array[class_…

系统思考—企业辅导咨询

从2004年、2014年到2024年&#xff0c;国九条政策的发布与变迁不仅影响了行业趋势&#xff0c;更深刻地改变了企业的风险预估和策略辅导。彼得杜鲁克曾经说过&#xff1a;“必须系统地抛弃旧知识。”这不仅是企业领导者的挑战&#xff0c;也是我们每个人的难题。难点不在于我们…

cesium教程

环境搭建 vscode安装Visual Studio Code - Code Editing. Redefined nodejs安装Node.js — Run JavaScript Everywhere cesium源码下载编译 cesium官网下载源码https://cesium.com/downloads/ 解压下载的源码 VsCode打开远吗&#xff0c;找到index.html,右键打开 Open wit…

开源博客项目Blog .NET Core源码学习(20:App.Hosting项目结构分析-8)

本文学习并分析App.Hosting项目中后台管理页面的个人资料页面、修改密码页面。 个人资料页面 个人资料页面用于显示和编辑个人信息&#xff0c;支持从本地上传个人头像。整个页面使用了layui中的表单、日期与时间选择、上传等样式或模块&#xff0c;通过layui.css文件设置样式…

案例-部门管理-删除

黑马程序员JavaWeb开发教程 文章目录 一、查看页面原型二、查看接口文档三、开发1、Controller2、Service&#xff08;1&#xff09;service接口层&#xff08;3&#xff09;service实现层 3、Mapper4、Postman 一、查看页面原型 二、查看接口文档 三、开发 1、Controller 因…