【Java学习笔记】包装类
包装类(Wrapper)
1. 介绍
-
(1)针对八种基本数据类型相应的引用类型 --> 包装类
-
(2)有了类的特点,就可以调用类中的方法
2. 分类和继承关系
基本数据类型 | 包装类 | 父类 |
---|---|---|
boolean | Boolean | Object |
char | Character | Object |
byte | Byte | Number |
short | Short | Number |
int | Integer | Number |
long | Long | Number |
float | Float | Number |
double | Double | Number |
一、包装类和基本数据类型的相互转换(装箱和拆箱)
(1)jdk5 前的手动装箱和拆箱方式, 装箱:基本类型->包装类型,反之,拆箱
(2)jdk5 以后(含 jdk5)的自动装箱和拆箱方式
(3)底层调用的方法
-
自动装箱:
valueOf()
方法 -
自动拆箱:
intValue()
方法
(4)下面以Integer
举例,其他包装类的方法类似,不一一举例
1. 装箱(int
--> Integer
)
int n = 10;// 方式一
Integer integer = Integer.valueOf(n);// 方式二
Integer integer1 = new Integer(n);
2. 拆箱(Integer
--> int
)
int n = 10;// 装箱
Integer integer = Integer.valueOf(n);// 拆箱
int n1 = integer.intValue();
3. 自动装箱和插箱
int n = 10;// 自动装箱
Integer integer = n; // 底层调用 valueOf() 方法// 自动拆箱
int n1 = integer; // 底层调用 intValue() 方法
实现自动的原理:在底层会调用相应的方法
二、包装类和String 类的相互转换
1. Integer
--> String
的三种方法
-
(1)使用字符串串拼接
-
(2)使用
Integer.toString()
方法 -
(3)使用
String.valueOf()
方法
代码示例
Integer integer = 5; // 自动装箱// Integer --> String// 方法一
String str1 = integer + "";// 方法二
String str2 = integer.toString();// 方法三
String str3 = String.valueOf(integer);
2. String
--> Integer
两种方法
-
(1)使用
Integer.parseInt()
方法(自动装箱)-
解读:
parseInt()
方法返回int
类型,本质还是把int
类型赋值给Integer
类型,实现了自动装箱
-
-
(2)使用构造器,创建
Integer
对象
代码示例
String str = "123";Integer integer1 = Integer.parseInt(str); // 使用自动装箱Integer integer2 = new Integer(str); // 使用构造器
三、Integer
类和Character
类的一些常用方法
说明:下面举例说明,对于其他类型的大同小异
方法 | 描述 |
---|---|
Integer.MIN_VALUE | 返回整数的最小值 |
Integer.MAX_VALUE | 返回整数的最大值 |
Character.isDigit(char) | 判断字符是否为数字 |
Character.isLetter(char) | 判断字符是否为字母 |
Character.isUpperCase(char) | 判断字符是否为大写字母 |
Character.isLowerCase(char) | 判断字符是否为小写字母 |
Character.isWhitespace(char) | 判断字符是否为空格 |
Character.toUpperCase(char) | 将字符转换为大写字母 |
Character.toLowerCase(char) | 将字符转换为小写字母 |
代码示例
public class Test {public static void main(String[] args) {System.out.println(Integer.MIN_VALUE); // 返回最小值System.out.println(Integer.MAX_VALUE); // 返回最大值System.out.println(Character.isDigit('a')); // 判断是不是数字System.out.println(Character.isLetter('a')); // 判断是不是字母System.out.println(Character.isUpperCase('a')); // 判断是不是大写System.out.println(Character.isLowerCase('a')); // 判断是不是小写System.out.println(Character.isWhitespace('a')); // 判断是不是空格System.out.println(Character.toUpperCase('a')); // 转成大写System.out.println(Character.toLowerCase('A')); // 转成小写}
}// 运行结果
-2147483648 // 返回最小值
2147483647 // 返回最大值
false // 判断是不是数字
true // 判断是不是字母
false // 判断是不是大写
true // 判断是不是小写
false // 判断是不是空格
A // 转成大写
a // 转成小写
四、Integer
的创建机制底层源码探究
源码如下
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}
继续追源码,可以得到:low:-127、high:128
int
--> Integer
底层机制的解释
-
(1)值在
-128 --> 127
范围内会使用缓存池,当两个 Integer 对象的值在这个范围内时,它们会引用相同的缓存对象(存储在Cache
数组中) -
(2)如果数值超出范围,转换时,底层会创建
Integer
对象
代码示例
(1)数据在范围内:引用相同的缓存对象
Integer integer1 = 1;
Integer integer2 = 1;
System.out.println(integer1 == integer2);// 输出结果
true
(2)数据不再范围内:创建Integer
对象
Integer integer1 = 128;
Integer integer2 = 128;
System.out.println(integer1 == integer2);// 输出结果
false
五、题目练习
1. 易错题
(1)第一题
Object obj1 = true ? new Integer(1) : new Double(2.0);
System.out.println(obj1);
输出:1.0
解释:三元运算符看成一个整体,double
的优先级最高,所以输出double
(遵循自动类型转换中的自动提升原则)
自动提升原则:表达式结果的类型自动提升为操作数中最大的类型
int result = true ? 1 : 2.5;
System.out.println(result);
输出:1.0
(2)第二题
Object obj2;
if (true) {obj2 = new Integer(1);
} else {obj2 = new Double(2.0);
}
System.out.println(obj2);
输出:1
2. 综合题
答案
总结
(1)如果是在范围内:是同一个对象
(2)如果超出范围或者new
:只要是创建了对象就不是同一个对象
(3)int
和Integer
:只要有基本数据类型,判断的是值是否相等
相关文章:

【Java学习笔记】包装类
包装类(Wrapper) 1. 介绍 (1)针对八种基本数据类型相应的引用类型 --> 包装类 (2)有了类的特点,就可以调用类中的方法 2. 分类和继承关系 基本数据类型包装类父类booleanBooleanObjectc…...

【高效开发工具系列】Blackmagic Disk Speed Test for Mac:专业硬盘测速工具
博客目录 一、Blackmagic Disk Speed Test 概述二、软件核心功能解析三、v3.3 版本的新特性与改进四、实际应用场景分析五、使用技巧与最佳实践六、与其他工具的比较及优势 一、Blackmagic Disk Speed Test 概述 Blackmagic Disk Speed Test 是 Mac 平台上广受专业人士青睐的一…...
QtDBus模块功能及架构解析
Qt 6.0 中的 QtDBus 模块是一个用于进程间通信(IPC)的核心模块,它基于 D-Bus 协议实现。D-Bus 是一种在 Linux 和其他类 Unix 系统上广泛使用的消息总线系统,允许应用程序和服务相互通信。 一、QtDBus模块主要功能: 1…...
光学字符识别(OCR)理论概述与实践教程
一、 光学字符识别(OCR)理论基础 OCR,即Optical Character Recognition,旨在通过计算机视觉和模式识别技术,将图像中包含的文本信息转换为机器可编辑、可搜索的文本数据。这项技术是实现信息数字化、自动化处理纸质或图像化文档的关键。 1. OCR处理管线 OCR系统通常采用…...
关键字--sizeof
sizeof 是 C 中的一个编译时运算符,用于获取一个类型或对象在内存中所占的字节数(单位:字节,byte)。 用法 获取类型的大小: std::cout << sizeof(int) << std::endl; // 输出int类型的字节数…...
Ubuntu20.04启动python的虚拟环境
如果你使用 mkvirtualenv 来创建虚拟环境,说明你已经安装了 virtualenvwrapper,这是一个用于管理 Python 虚拟环境的工具。 激活虚拟环境 要激活你使用 mkvirtualenv 创建的虚拟环境,按照以下步骤操作: 1.确保已经安装了 virtu…...
网页在线客服系统自动欢迎语实现方案(PHP+MySQL)
一、实现思路 在网页在线客服系统中实现自动欢迎语,主要需要以下几个步骤: 在数据库中存储欢迎语内容判断用户是否为首次访问或新会话在适当时机自动发送欢迎消息 演示网站:gofly.v1kf.com 二、数据库设计 首先需要扩展数据库结构:…...

UniRig:如何在矩池云一站式解决 3D 模型绑定难题
在 3D 动画制作中,绑定(Rigging)是一个至关重要但复杂耗时的步骤。它包括为 3D 模型创建骨架并分配蒙皮权重,以实现流畅的动画效果。由清华大学与 Tripo 联合开发的 UniRig 框架,为这一难题提供了全新的解决方案。 什…...
用函数实现模块化程序设计(适合考研、专升本)
函数 定义:本质上是一段可以被连续调用、功能相对独立的程序段 c语言是通过“函数”实现模块化的。根据分类标准不同函数分为以下几类。 用户角度:库函数、自定义函数 函数形式:有参函数、无参函数 作用域:外部函数、内部函数 …...
玩转抖音矩阵:核心玩法与高效运营规则
一、 抖音矩阵:流量协同的生态网络 抖音矩阵,本质是运营一个相互关联、互相支持的抖音账号群。核心目标在于通过账号间的深度协同(内容、流量、粉丝),打破单个账号的流量天花板,实现11>2的效果。它不仅…...
spring:继承接口FactoryBean获取bean实例
spring框架提供接口FactoryBean获取bean实例。 实现步骤: 实现接口FactoryBean。 在xml文件中配置实现接口FactoryBean的类。 调用接口FactoryBean中方法getObject,获取bean实例。 实现接口类 package com.itheima.factory;import org.springframework…...

字符串字典序最大后缀问题详解
字符串字典序最大后缀问题详解 一、问题定义与背景1.1 问题描述1.2 实际应用场景 二、暴力解法及其局限性2.1 暴力解法思路2.2 代码示例2.3 局限性分析 三、双指针算法:高效解决方案3.1 算法核心思想3.2 算法步骤3.3 代码实现3.4 与暴力解法对比 四、复杂度分析4.1 …...

VScode打开后一直显示正在重新激活终端 问题的解决方法
一、问题 本人打开“.py”文件后,同时会出现以下两个问题。 1、VScode一直循环在”正在重新激活终端“ 2、日志显示intellicode报错: Sorry, something went wrong activating IntelliCode support for Python. Please check the “Python” and “VS I…...

pe文件结构(TLS)
TLS 什么是TLS? TLS是 Thread Local Storage 的缩写,线程局部存储。主要是为了解决多线程中变量同步的问题 如果需要要一个线程内部的各个函数调用都能访问,但其它线程不能访问的变量(被称为static memory local to a thread 线程局部静态变…...
二进制安全-OpenWrt-uBus
1 需求 需求:ubus list 需求:ubus -v list 需求:ubus -v list zwrt_router.api 2 接口 rootOpenWrt:/# ubus Usage: ubus [<options>] <command> [arguments...] Options:-s <socket>: Set the unix domain …...
分页查询的实现
第一步:导入pom依赖 <!--配置PageHelper分页插件--><dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version><exclusions>…...

中型零售业数据库抉择:MySQL省成本,SQL SERVER?
针对中型零售企业(20台固定POS数十台移动POS,含库存管理与结算业务)的操作系统与数据库选型,需平衡性能、成本、扩展性及运维效率。结合行业实践与系统需求,建议如下: 🖥️ 一、操作系统选型…...
使用 Windows 完成 iOS 应用上架:Appuploader对比其他证书与上传方案
iOS 应用上架流程对很多开发者来说都是一道复杂关卡,特别是当你并不使用 Mac 电脑时。虽然 Apple 一直强调使用其原生工具链(Xcode 和 Transporter),但现实是大量开发者正在寻找更灵活的替代方案。 今天我将从证书申请和 IPA 上传…...

IDEA中的debug使用技巧
详细教学视频见b站链接:IDEA的debug调试 CSDN详细博客文章链接:debug文章学习 以下为个人学习记录总结: idea中的debug模式界面如下: 现在详细介绍图标作用: 图标一(Show Execution Point)&…...

RockyLinux9.6搭建k8s集群
博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…...
MS358A 低功耗运算放大器 车规
MS358A 低功耗运算放大器 车规 产品简述 MS358A 是双通道运算放大器,具有低功耗、宽电源电压范围、高单位增益带宽的特性。在特定情况下,压摆率可以达到0.4V/μs 。每个通道的静态电流 (5V) 只有 430μA 。 MS358A输入共模范围可以到地,同时…...

AI IDE 正式上线!通义灵码开箱即用
近期,通义灵码AI IDE正式上线,即日起用户可在通义灵码官网免费下载开箱即用。 作为AI原生的开发环境工具,通义灵码AI IDE深度适配了最新的千问3大模型,并全面集成通义灵码插件能力,具备编程智能体、行间建议预测、行间…...
CRMEB 中 PHP 快递查询扩展实现:涵盖一号通、阿里云、腾讯云
目前已有一号通快递查询、阿里云快递查询扩展 扩展入口文件 文件目录 crmeb\services\express\Express.php 默认一号通快递查询 namespace crmeb\services\express;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use think\Container; use thi…...

Ubuntu20.04基础配置安装——系统安装(一)
引言: 工作需要,Ubuntu的各类环境配置,从23年开始使用Ubuntu20.04之后,尽管能力在不断提升,但是依旧会遇到Ubuntu系统崩掉的情况,为了方便后续系统出现问题及时替换,减少从网上搜索资源进行基础…...
ubuntu opencv 安装
1.ubuntu opencv 安装 在Ubuntu系统中安装OpenCV,可以通过多种方式进行,以下是一种常用的安装方法,包括从源代码编译安装。请注意,安装步骤可能会因OpenCV的版本和Ubuntu系统的具体版本而略有不同。 一、安装准备 更新系统&…...
使用Python和Flask构建简单的机器学习API
在机器学习项目中,将模型部署为一个Web API是一种常见的需求。这样可以方便地将模型集成到其他应用程序中,例如移动应用、Web应用或其他后端服务。Flask是一个轻量级的Python Web框架,非常适合用于构建简单的API。本文将通过一个具体的例子&a…...

Kafka入门-消费者
消费者 Kafka消费方式:采用pull(拉)的方式,消费者从broker中主动拉去数据。使用pull的好处就是消费者可以根据自身需求,进行拉取数据,但是坏处就是如果Kafka没有数据,那么消费者可能会陷入循环…...
[论文阅读] 人工智能 | 搜索增强LLMs的用户偏好与性能分析
【论文解读】Search Arena:搜索增强LLMs的用户偏好与性能分析 论文信息 作者: Mihran Miroyan, Tsung-Han Wu, Logan King等 标题: Search Arena: Analyzing Search-Augmented LLMs 来源: arXiv preprint arXiv:2506.05334v1, 2025 一、研究背景:…...

中电金信:从智能应用到全栈AI,大模型如何重构金融业务价值链?
导语 当前,AI大模型技术正加速重构金融行业的智能化图景。为助力金融机构精准把握这一变革机遇,中电金信与IDC联合发布《中国金融大模型发展白皮书》。《白皮书》在梳理了AI大模型整体发展现状的基础上,结合金融行业用户的需求调研深入分析了…...

巴西医疗巨头尤迈Kafka数据泄露事件的全过程分析与AI安防策略分析
一、事件背景与主体信息 涉事主体:Unimed,全球最大医疗合作社,巴西医疗行业龙头企业,拥有约1500万客户。技术背景:泄露源于其未保护的Kafka实例(开源实时数据传输平台),用于客户与聊天机器人“Sara”及医生的实时通信。二、时间线梳理 时间节点关键事件描述2025年3月24…...