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

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.概览

基本数据类型与包装类型

基本数据类型包装数据类型
bytejava.lang.Byte
shortjava.lang.Short
intjava.lang.Integer
longjava.lang.Long
floatjava.lang.Float
doublejava.lang.Double
booleanjava.lang.Boolean
charjava.lang.Character

2.说明

  1. 包装类是引用数据类型;
  2. 基本数据类型对应的包装类中,前六项数字类型都继承了 Number 类;
  3. Number 类提供了 byteValue()、shortValue()、intValue()、longValue()、floatValue()、doubleValue()方法,可以将包装类型转换为基本数据类型,该过程称为拆箱;
  4. Boolean 的拆箱方法是 booleanValue();
  5. 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.构造方法

  1. 通过构造方法将基本数据类型包装成引用数据类型,该过程称为装箱;
  2. 若数字中类型不一致,会抛出数字格式化异常;
  3. 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.说明

  1. 为了解决整数超过 long 最大值的问题,Java提供了一种引用数据类型 java.math.BigInteger;
  2. 它的父类是 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.说明

  1. 为了解决浮点数超过 double 最大值的问题,Java提供了一种引用数据类型 java.math.BigDecimal;
  2. 它的父类是 Number 类;
  3. 常用于财务软件。

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.说明

  1. java.text.DecimalFormat 类是用来数字格式化的;
  2. 常用格式:
    1. 三个数字为一组,每组之间使用逗号间隔,保留两位小数;
    2. 三个数字为一组,每组之间使用逗号间隔,保留四位小数,不够补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&#xf…...

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知识架构之神经网络

神经网络:这是整个内容的主题,是一种模拟人类大脑神经元结构和功能的计算模型,在人工智能领域广泛应用。基本概念:介绍神经网络相关的基础概念,为后续深入理解神经网络做铺垫。定义与起源: 神经网络是模拟人类大脑神经元结构和功能的计算模型,其起源于对生物神经系统的研…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则&#xf…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: ​onCreate()​​ ​调用时机​:Activity 首次创建时调用。​…...

2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

嵌入式常见 CPU 架构

架构类型架构厂商芯片厂商典型芯片特点与应用场景PICRISC (8/16 位)MicrochipMicrochipPIC16F877A、PIC18F4550简化指令集,单周期执行;低功耗、CIP 独立外设;用于家电、小电机控制、安防面板等嵌入式场景8051CISC (8 位)Intel(原始…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...