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知识架构之神经网络
神经网络:这是整个内容的主题,是一种模拟人类大脑神经元结构和功能的计算模型,在人工智能领域广泛应用。基本概念:介绍神经网络相关的基础概念,为后续深入理解神经网络做铺垫。定义与起源: 神经网络是模拟人类大脑神经元结构和功能的计算模型,其起源于对生物神经系统的研…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
stm32G473的flash模式是单bank还是双bank?
今天突然有人stm32G473的flash模式是单bank还是双bank?由于时间太久,我真忘记了。搜搜发现,还真有人和我一样。见下面的链接:https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...
《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
腾讯云V3签名
想要接入腾讯云的Api,必然先按其文档计算出所要求的签名。 之前也调用过腾讯云的接口,但总是卡在签名这一步,最后放弃选择SDK,这次终于自己代码实现。 可能腾讯云翻新了接口文档,现在阅读起来,清晰了很多&…...
