Java基础关键_012_包装类
目 录
一、基本数据类型对应的包装类
1.概览
2.说明
二、包装类
1.最大值与最小值
2.构造方法
3.常用方法(Integer为例)
(1)compare(int x, int y)
(2)max(int a, int b) 和 min(int a, int b)
(3)parseInt(String s)
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
(5)valueOf(int i)、valueOf(String s)
三、String、int、Integer 间的相互转换
四、自动装箱与自动拆箱
五、整数型常量池
六、BigInteger
1.说明
2.常用方法
七、BigDecimal
1.说明
2.其他常用方法
八、数字格式化
1.说明
2.实例
一、基本数据类型对应的包装类
1.概览
| 基本数据类型 | 包装数据类型 |
|---|---|
| byte | java.lang.Byte |
| short | java.lang.Short |
| int | java.lang.Integer |
| long | java.lang.Long |
| float | java.lang.Float |
| double | java.lang.Double |
| boolean | java.lang.Boolean |
| char | java.lang.Character |
2.说明
- 包装类是引用数据类型;
- 基本数据类型对应的包装类中,前六项数字类型都继承了 Number 类;
- Number 类提供了 byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()方法,可以将包装类型转换为基本数据类型,该过程称为拆箱;
- Boolean 的拆箱方法是 booleanValue();
- Character 的拆箱方法是 charValue()。
二、包装类
1.最大值与最小值
public class PackageTest {public static void main(String[] args) {System.out.println(Byte.MAX_VALUE); // 127System.out.println(Byte.MIN_VALUE); // -128System.out.println(Short.MAX_VALUE); // 32767System.out.println(Short.MIN_VALUE); // -32768System.out.println(Integer.MAX_VALUE); // 2147483647System.out.println(Integer.MIN_VALUE); // -2147483648System.out.println(Long.MAX_VALUE); // 9223372036854775807System.out.println(Long.MIN_VALUE); // -9223372036854775808System.out.println(Float.MAX_VALUE); // 3.4028235E38System.out.println(Float.MIN_VALUE); // 1.4E-45System.out.println(Double.MAX_VALUE); // 1.7976931348623157E308System.out.println(Double.MIN_VALUE); // 4.9E-324}
}
2.构造方法
- 通过构造方法将基本数据类型包装成引用数据类型,该过程称为装箱;
- 若数字中类型不一致,会抛出数字格式化异常;
- jdk 9 之后,被标注已过时。
3.常用方法(Integer为例)
(1)compare(int x, int y)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.compare(1, 9)); // 输出:-1System.out.println(Integer.compare(8, 2)); // 输出:1System.out.println(Integer.compare(5, 5)); // 输出:0}
}
(2)max(int a, int b) 和 min(int a, int b)
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.max(1, 9)); // 输出:9System.out.println(Integer.min(1, 9)); // 输出:1}
}
(3)parseInt(String s)
将字符串数字转换为数字类型。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.parseInt("123")); // 输出:123System.out.println(Integer.parseInt("123" + 1)); // 输出:1231System.out.println(Integer.parseInt("123") + 1); // 输出:124}
}
(4)toBinaryString(int i)、toHexString(int i)、toOctalString(int i)
分别获取数字 二进制、十六进制、八进制 的字符串表示形式。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.toBinaryString(20)); // 10100System.out.println(Integer.toHexString(20)); // 14System.out.println(Integer.toOctalString(20)); // 24}
}
(5)valueOf(int i)、valueOf(String s)
将 基本数据类型 int 或字符串 转换成 Integer ,且字符串必须是数字字符串,否则会抛出数字格式化异常。
public class PackageTest {public static void main(String[] args) {System.out.println(Integer.valueOf(20)); // 输出:20System.out.println(Integer.valueOf("123")); // 输出:123}
}
三、String、int、Integer 间的相互转换
public class PackageTest {public static void main(String[] args) {/*** String ——> int 转换*/String s1 = "123";int i1 = Integer.parseInt(s1);System.out.println("[ String ——> int 转换 ]");System.out.println("i1 = " + i1); // 123System.out.println("i1 + 1 = " + (i1 + 1)); // 124/*** int ——> String 转换*/int i2 = 123;String s2 = i2 + "";System.out.println("[ int ——> String 转换 ]");System.out.println("s2 = " + s2); // 123System.out.println("s2 + 1 = " + (s2 + 1)); // 1231String s3 = Integer.toString(i2);System.out.println("s3 = " + s3); // 123System.out.println("s3 + 1 = " + (s3 + 1)); // 1231/*** String ——> Integer 转换*/String s4 = "123";Integer i3 = Integer.valueOf(s4);System.out.println("[ String ——> Integer 转换 ]");System.out.println("i3 = " + i3); // 123System.out.println("i3 + 1 = " + (i3 + 1)); // 124/*** Integer ——> String 转换*/Integer i4 = 123;String s5 = i4.toString();System.out.println("[ Integer ——> String 转换 ]");System.out.println("s5 = " + s5); // 123System.out.println("s5 + 1 = " + (s5 + 1)); // 1231/*** int ——> Integer 转换*/int i5 = 123;Integer i6 = Integer.valueOf(i5);System.out.println("[ int ——> Integer 转换 ]");System.out.println("i6 = " + i6); // 123System.out.println("i6 + 1 = " + (i6 + 1)); // 124/*** Integer ——> int 转换*/Integer i7 = 123;int i8 = i7.intValue();System.out.println("[ Integer ——> int 转换 ]");System.out.println("i8 = " + i8); // 123System.out.println("i8 + 1 = " + (i8 + 1)); // 124}
}
四、自动装箱与自动拆箱
jdk 5 新增,是编译阶段的功能。
public class Test {public static void main(String[] args) {// 自动装箱,实际上是 Integer i1 = new Integer(10);Integer i1 = 10;// 自动拆箱,实际上是 int i2 = i1.intValue();int i2 = i1;}
}
五、整数型常量池
public class Test {public static void main(String[] args) {Integer i1 = 127;Integer i2 = 127;System.out.println(i1 == i2); // trueInteger i3 = 128;Integer i4 = 128;System.out.println(i3 == i4); // false}
}
为什么会造成这样的结果呢?
因为 [-128,127] 较为常用,为提高效率,Java 提供了整数型常量池。该常量池是一个 Integer 数组,存储了256个 Integer 引用,只要在这个范围,直接从整数型常量池中获取。
六、BigInteger
1.说明
- 为了解决整数超过 long 最大值的问题,Java提供了一种引用数据类型 java.math.BigInteger;
- 它的父类是 Number 类。
public class Test {public static void main(String[] args) {long l = 999999999999999999L; // long类型最大值System.out.println("l = " + l);BigInteger b = new BigInteger("999999999999999999999999999"); // BigInteger类型System.out.println("b = " + b);}
}
2.常用方法
public class Test {public static void main(String[] args) {BigInteger b1 = new BigInteger("2");BigInteger b2 = new BigInteger("3");BigInteger b3 = new BigInteger("-4");System.out.println("b1 + b2 = " + b1.add(b2)); // 加法System.out.println("b1 - b2 = " + b1.subtract(b2)); // 减法System.out.println("b1 * b2 = " + b1.multiply(b2)); // 乘法System.out.println("b1 / b2 = " + b1.divide(b2)); // 除法System.out.println("b1 % b2 = " + b1.remainder(b2)); // 取余System.out.println("b1 ^ 2 = " + b1.pow(2)); // 幂System.out.println("b1.compareTo(b2) = " + b1.compareTo(b2)); // 比较System.out.println("b1.max(b2) = " + b1.max(b2)); // 取大System.out.println("b1.min(b2) = " + b1.min(b2)); // 取小System.out.println("b3.abs() = " + b3.abs()); // 绝对值System.out.println("b1.sqrt() = " + b1.sqrt()); // 平方根}
}

七、BigDecimal
1.说明
- 为了解决浮点数超过 double 最大值的问题,Java提供了一种引用数据类型 java.math.BigDecimal;
- 它的父类是 Number 类;
- 常用于财务软件。
2.其他常用方法
public class Test {public static void main(String[] args) {BigDecimal b = new BigDecimal("520.1314");System.out.println(b.movePointLeft(1)); // 向左移动一位System.out.println(b.movePointRight(1)); // 向右移动一位}
}
八、数字格式化
1.说明
- java.text.DecimalFormat 类是用来数字格式化的;
- 常用格式:
- 三个数字为一组,每组之间使用逗号间隔,保留两位小数;
- 三个数字为一组,每组之间使用逗号间隔,保留四位小数,不够补0。
2.实例
public class Test {public static void main(String[] args) {DecimalFormat df1 = new DecimalFormat("###,###.##");System.out.println(df1.format(5201314.1314)); // 5,201,314.13DecimalFormat df2 = new DecimalFormat("###,###.0000");System.out.println(df2.format(5201314.13)); //5,201,314.1300}
}相关文章:
Java基础关键_012_包装类
目 录 一、基本数据类型对应的包装类 1.概览 2.说明 二、包装类 1.最大值与最小值 2.构造方法 3.常用方法(Integer为例) (1)compare(int x, int y) (2)max(int a, int b) 和 min(int a, int b) &…...
【react】TypeScript在react中的使用
目录 一、环境与项目配置 1. 创建 TypeScript React 项目 2. 关键tsconfig.json配置 3.安装核心类型包 二、组件类型定义 1. 函数组件(React 18) 2.类组件 三、Hooks 的深度类型集成 1. useState 2. useEffect 3. useRef 4. 自定义 Hook 四、事…...
vllm的使用方式,入门教程
vLLM是一个由伯克利大学LMSYS组织开源的大语言模型推理框架,旨在提升实时场景下的大语言模型服务的吞吐与内存使用效率。以下是详细的vLLM使用方式和入门教程: 1. 前期准备 在开始使用vLLM之前,建议先掌握一些基础知识,包括操作…...
IDEA 使用codeGPT+deepseek
一、环境准备 1、IDEA 版本要求 安装之前确保 IDEA 处于 2023.x 及以上的较新版本。 2、Python 环境 安装 Python 3.8 或更高版本 为了确保 DeepSeek 助手能够顺利运行,您需要在操作系统中预先配置 Python 环境。具体来说,您需要安装 Python 3.8 或更高…...
vue3中测试:单元测试、组件测试、端到端测试
1、单元测试:单元测试通常适用于独立的业务逻辑、组件、类、模块或函数,不涉及 UI 渲染、网络请求或其他环境问题。 describe(increment, () > {// 测试用例 }) toBe():用于严格相等比较(),适用于原始类…...
机器学习介绍与数据集
一、机器学习介绍与定义 1.1 机器学习定义 机器学习(Machine Learning)是让计算机从数据中自动学习规律,并依据这些规律对未来数据进行预测的技术。它涵盖聚类、分类、决策树、贝叶斯、神经网络、深度学习(Deep Learning…...
React 源码揭秘 | 更新队列
前面几篇遇到updateQueue的时候,我们把它先简单的当成了一个队列处理,这篇我们来详细讨论一下这个更新队列。 有关updateQueue中的部分,可以见源码 UpdateQueue实现 Update对象 我们先来看一下UpdateQueue中的内容,Update对象&…...
关于网络端口探测:TCP端口和UDP端口探测区别
网络端口探测是网络安全领域中的一项基础技术,它用于识别目标主机上开放的端口以及运行在这些端口上的服务。这项技术对于网络管理和安全评估至关重要。在网络端口探测中,最常用的两种协议是TCP(传输控制协议)和UDP(用…...
Vue.js 中使用 JSX 自定义语法封装组件
Vue.js 中使用 JSX 自定义语法封装组件 在 Vue.js 开发中,使用模板语法是常见的构建用户界面方式,但对于一些开发者,特别是熟悉 JavaScript 语法的,JSX 提供了一种更灵活、更具表现力的替代方案。通过 JSX,我们可以在…...
设计模式教程:备忘录模式(Memento Pattern)
备忘录模式(Memento Pattern)详解 一、模式概述 备忘录模式(Memento Pattern)是一种行为型设计模式,允许在不暴露对象实现细节的情况下,保存对象的内部状态,并在需要时恢复该状态。备忘录模式…...
使用 C# 以api的形式调用 DeepSeek
一:创建 API 密钥 首先,您需要来自 DeepSeek 的 API 密钥。访问 DeepSeek,创建一个帐户,并生成一个新的 API 密钥。 二:安装所需的 NuGet 包 使用 NuGet 包管理器安装包,或在包管理器控制台中运行以下命…...
CS5366AN:高集成Type-C转HDMI 4K60Hz芯片的国产突破
一、芯片概述 CS5366AN 是集睿致远(ASL)推出的一款高度集成的 Type-C转HDMI 2.0视频转换芯片,专为扩展坞、游戏底座、高清显示设备等场景设计。其核心功能是将USB Type-C接口的DisplayPort信号(DP Alt Mode)转换为HDM…...
瑞芯微RK安卓Android主板GPIO按键配置方法,触觉智能嵌入式开发
触觉智能分享,瑞芯微RK安卓Android主板GPIO按键配置方法,方便大家更好利用空闲IO!由触觉智能Purple Pi OH鸿蒙开发板演示,搭载了瑞芯微RK3566四核处理器,树莓派卡片电脑设计,支持安卓Android、开源鸿蒙Open…...
Dify自定义工作流集成指南:对接阿里云百炼文生图API的实现方案
dify工作流的应用基本解释 dify应用发布相关地址:应用发布 | Dify 根据官方教程,我们可以看到dify自定义的工作流可以发布为----工具 这个教程将介绍如何通过工作流建立一个使用阿里云百炼文生图模型。 工具则可以给其他功能使用,如agent…...
前端项目配置 Nginx 全攻略
在前端开发中,项目开发完成后,如何高效、稳定地将其部署到生产环境是至关重要的一步。Nginx 作为一款轻量级、高性能的 Web 服务器和反向代理服务器,凭借其出色的性能和丰富的功能,成为了前端项目部署的首选方案。本文将详细介绍在…...
基于开源鸿蒙(OpenHarmony)的【智能家居综合应用】系统
基于开源鸿蒙OpenHarmony的智能家居综合应用系统 1. 智能安防与门禁系统1) 系统概述2) 系统架构3)关键功能实现4)安全策略5)总结 2.环境智能调节系统1)场景描述2)技术实现3)总结 3.健康管理与睡眠监测1&…...
电子电气架构 --- 主机厂电子电气架构演进
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
物联网通信应用案例之《智慧农业》
案例概述 在智慧农业方面,一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等,且数据情况可远程查看,以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…...
Java注解的原理
目录 问题: 作用: 原理: 注解的限制 拓展: 问题: 今天刷面经,发现自己不懂注解的原理,特此记录。 作用: 注解的作用主要是给编译器看的,让它帮忙生成一些代码,或者是帮忙检查…...
AI知识架构之神经网络
神经网络:这是整个内容的主题,是一种模拟人类大脑神经元结构和功能的计算模型,在人工智能领域广泛应用。基本概念:介绍神经网络相关的基础概念,为后续深入理解神经网络做铺垫。定义与起源: 神经网络是模拟人类大脑神经元结构和功能的计算模型,其起源于对生物神经系统的研…...
FPGA DDR3硬件测试避坑指南:如何设计一个可靠的读写控制器并验证全地址空间
FPGA DDR3硬件测试避坑指南:如何设计一个可靠的读写控制器并验证全地址空间 当你在凌晨三点的实验室里盯着示波器上跳动的DDR3信号波形,突然发现某个地址区间出现零星的数据错误时,就会明白为什么全地址测试不是可选项而是必选项。这不是关于…...
喔去,litellm 竟然被投毒了,赶紧检查你的机器中招了没有倭
一、什么是setuptools? setuptools 是一个用于创建、分发和安装 Python 包的核心库。 它可以帮助你: 定义 Python 包的元数据(如名称、版本、作者等)。 声明包的依赖项,确保你的包能够正确运行。 构建源代码分发包&…...
AVR-IoT Cellular Mini底层技术解析:安全蜂窝连接与低功耗设计
1. AVR-IoT Cellular Mini 开发板底层技术解析AVR-IoT Cellular Mini 是 Microchip 推出的面向蜂窝物联网(Cellular IoT)应用的紧凑型开发平台,其核心价值不仅在于硬件集成度,更在于其构建在 DxCore 基础上的完整 Arduino 兼容软件…...
G-Helper技术深度解析:华硕硬件控制架构揭秘与性能优化实践
G-Helper技术深度解析:华硕硬件控制架构揭秘与性能优化实践 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Stri…...
藏在底层的“树之家族”:从二叉树到B+树,你天天用却未必懂
写在前面“二叉树、二叉查找树、平衡二叉树、红黑树、B树、B树……这些数据结构,我好像只在课本上见过。平时写业务代码,一个ArrayList、HashMap走天下,谁没事自己写树啊?”这是很多后端开发者的真实想法。包括我自己,…...
ADXL362超低功耗加速度计驱动开发与工程实践
1. ADXL362加速度计驱动库深度解析与嵌入式工程实践ADXL362是Analog Devices(ADI)推出的超低功耗、3轴数字MEMS加速度计,专为电池供电的物联网终端、可穿戴设备、工业状态监测及远程传感器节点等对能效比要求严苛的应用场景而设计。其核心优势…...
无需代码!AcousticSense AI音乐分类工具5分钟部署指南
无需代码!AcousticSense AI音乐分类工具5分钟部署指南 1. 让AI听懂音乐:视觉化流派分析新体验 你是否遇到过这样的情况:听到一首好歌却说不清它属于什么风格?或者需要整理上千首音乐却苦于手动分类?AcousticSense AI…...
打造自己的信道编码工具箱——Turbo、LDPC、极化码三合一
作者:绳匠_ZZ0从零开始,把现代编码三巨头整合到一个C语言项目中,实现编码、译码、误码率测试一体化📦 前言:为什么我要做这个工具箱?过去几个月,我陆续学习了Turbo码、LDPC码和极化码。每次写代…...
YOLO12镜像问题解决:服务异常重启、参数调整技巧
YOLO12镜像问题解决:服务异常重启、参数调整技巧 1. YOLO12镜像常见问题诊断 1.1 服务异常重启问题排查 YOLO12镜像采用Supervisor进行进程管理,当遇到服务异常时,可以按照以下步骤排查: 检查服务状态: supervisorc…...
一键生成多语言字幕:用Open-Lyrics轻松实现音频视频AI翻译
一键生成多语言字幕:用Open-Lyrics轻松实现音频视频AI翻译 【免费下载链接】openlrc Transcribe and translate voice into LRC file using Whisper and LLMs (GPT, Claude, et,al). 使用whisper和LLM(GPT,Claude等)来转录、翻译你的音频为字幕文件。 …...
