包装类笔记
包装类
5.1 概述
Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:
基本类型 | 对应的包装类(位于 java. Lang 包中) |
---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
除了这个 char he int型数据,别的都是首字母大写就好了 | |
包装类总结来说就是以基本数据类型未标桩定义的对象包 |
5.2 Integer 类
- Integer 类概述
包装一个对象中的原始类型 int 的值 - Integer 类构造方法及静态方法
方法名 | 说明 |
---|---|
public Integer (int value) | 根据 int 值创建 Integer 对象 (过时) |
public Integer (String s) | 根据 String 值创建 Integer 对象 (过时) |
public static Integer valueOf (int i) | 返回表示指定的 int 值的 Integer 实例 |
public static Integer valueOf (String s) | 返回保存指定 String 值的 Integer 对象 |
static string tobinarystring (int i) | 得到二进制 |
static string tooctalstring (int i) | 得到八进制 |
static string toHexstring (int i) | 得到十六进制 |
static int parseInt (string s) | 将字符串类型的整数转成 int 类型的整数 |
public static void main(String[] args) {Integer last1 = new Integer(10); //以前过时的创建方法Integer last2= new Integer("1234"); //也是过时的创建方法System.out.println(last1); //10System.out.println(last2); //1234//现在的Integer创建方式一般是用这个静态方法直接进行创建Integer now1 = Integer.valueOf(10); //10Integer now2 = Integer.valueOf("4567"); //4567System.out.println(now1);System.out.println(now2);//包装类的进制转换/** 下面这个也是一种静态方法* 主要作用是将这个里面传递的参数转化为一个自己定义的进制* */String binary= Integer.toBinaryString(10); //十进制String binary1= Integer.toOctalString(9); //八进制String binary2 = Integer.toHexString(17);//十六进制System.out.println(binary);//1010System.out.println(binary1);//11System.out.println(binary2);//11}
其中这个方法是不全的,对于这个 parse 转化,我们可以又 parseInt 也可以有 Double. parseDouble,也可以有 Boolean. parseBoolean
同样对于这个 toXXXString 方法,我们也有一个总方法就是 toString 方法,这个方法可以我们自己自定义这个进制
String binary3 = Integer.toString(3,2);String binary4 = Integer.toString(9,8);String binary5 = Integer.toString(10,9);System.out.println(binary3);System.out.println(binary4);System.out.println(binary5);
但是要注意这个 Double 类型虽然也有这个 toString 方法,但是却不能进行进制转化
有关于进制转化的可以看这个文章。一个是 obsidian 的内链,一个是博客的链接
[[二进制, 八进制, 和十六进制的输入和输出]]
博客
5.3 装箱与拆箱
基本类型与对应的包装类对象之间,来回转换的过程称为”装箱“与”拆箱“:
- 装箱:从基本类型转换为对应的包装类对象。
- 拆箱:从包装类对象转换为对应的基本类型。
用 Integer 与 int 为例:(看懂代码即可)
基本数值---->包装对象
Integer i = new Integer (4);//使用构造函数函数
Integer iii = Integer.ValueOf (4);//使用包装类中的 valueOf 方法
包装对象---->基本数值
int num = i.intValue ();
int i = now1.intValue();int i2 = now2.intValue();byte a = now1.byteValue();byte b = now2.byteValue();System.out.println(i);System.out.println(i2);System.out.println(a);System.out.println(b);
对于这个装箱和拆箱的过程,其中拆箱其实就是对这个包装类的成员值变量进行了强制类型转化
private final int value;public byte byteValue() {return (byte)value;}
对于这个装箱的过程,我们其实就是对这个包装类的内部成员进行赋值
private final int value;public Integer(int value) {this.value = value;}
5.4 自动装箱与自动拆箱
由于我们经常要做基本类型与包装类之间的转换,从 Java 5(JDK 1.5)开始,基本类型与包装类的装箱、拆箱动作可以自动完成。例如:
Integer i = 4;//自动装箱。相当于 Integer i = Integer.ValueOf (4);
i = i + 5;//等号右边:将 i 对象转成基本数值 (自动拆箱) i.intValue () + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。
5.5 基本类型与字符串之间的转换
基本类型转换为 String
- 转换方式
- 方式一:直接在数字后加一个空字符串
- 方式二:通过 String 类静态方法 valueOf()
- 示例代码
public class IntegerDemo {public static void main(String[] args) {//int --- Stringint number = 100;//方式1String s1 = number + "";System.out.println(s1);//方式2//public static String valueOf(int i)String s2 = String.valueOf(number);System.out.println(s2);System.out.println("--------");}
}
String 转换成基本类型
除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型:
public static byte parseByte(String s)
:将字符串参数转换为对应的 byte 基本类型。public static short parseShort(String s)
:将字符串参数转换为对应的 short 基本类型。public static int parseInt(String s)
:将字符串参数转换为对应的 int 基本类型。public static long parseLong(String s)
:将字符串参数转换为对应的 long 基本类型。public static float parseFloat(String s)
:将字符串参数转换为对应的 float 基本类型。public static double parseDouble(String s)
:将字符串参数转换为对应的 double 基本类型。public static boolean parseBoolean(String s)
:将字符串参数转换为对应的 boolean 基本类型。
[!tip]
除了 Character 类之外,其他所有包装类都具有 parseXxx 静态方法可以将字符串参数转换为对应的基本类型;
为什么 Character 类没有呢
这是因为这些强制转化的参数都是字符串的类型
Character
类表示一个字符,而字符本身就是一个单个的字符,无法像整数或浮点数那样具有多个字符组成的表示形式。因此,从字符串中解析字符的需求不如解析整数或浮点数那样常见。
如果想将一个表示单个字符的字符串转换成 char
类型,可以使用 charAt
方法来提取其中的字符。例如:
String str = "A";
char c = str.charAt(0);
System.out.println(c); // 输出:A
代码使用(仅以 Integer 类的静态方法 parseXxx 为例)如:
- 转换方式
- 方式一:先将字符串数字转成 Integer,再调用 valueOf ()方法
- 方式二:通过 Integer 静态方法 parseInt ()进行转换
- 示例代码
public class IntegerDemo {public static void main(String[] args) {//String --- intString s = "100";//方式1:String --- Integer --- intInteger i = Integer.valueOf(s);//public int intValue()int x = i.intValue();System.out.println(x);//方式2//public static int parseInt(String s)int y = Integer.parseInt(s);System.out.println(y);}}
[!warning]
如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出 java.lang.NumberFormatException
异常。
相关文章:
包装类笔记
包装类 5.1 概述 Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使…...
TC和TG油封有什么区别?
油封是各种机械系统(包括发动机和工业机械)中的重要部件,因为它们可以防止润滑剂和污染物的泄漏。在可用的不同类型的油封中,常用的是TC和TG密封件。在本文中,我们将讨论TC和TG油封之间的差异,帮助您了解它们的独特特性和应用。 …...

大数据之MapReduce
MapReduce概述 是一个分布式的编程框架,MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。 优点: 易于编程,简单的实现一些接口,就可以完成一…...

《机器人学一(Robotics(1))》_台大林沛群 第 5 周【机械手臂 轨迹规划】 Quiz 5
我又行了!🤣 求解的 位置 可能会有 变动,根据求得的A填写相应值即可。注意看题目。 coursera链接 文章目录 第1题 Cartesian space求解 题1-3 的 Python 代码 第2题第3题第4题 Joint space求解 题4-6 的 Python 代码 第5题第6题其它可参考代…...

嵌入式面试/笔试C相关总结
1、存储 单片机端编译后分为code ro rw zi几个区域,其中code是执行文件,ro(read only)只读区域,存放const修饰常量、字符串。rw(read write)存放已初始化变量。zi存放未初始化变量。编译完成后bin大小为coderorw。运行时所需内存为rwzi。 在电…...

支付宝使用OceanBase的历史库实践分享
为解决因业务增长引发的数据库存储空间问题,支付宝基于 OceanBase 数据库启动了历史库项目,通过历史数据归档、过期数据清理、异常数据回滚,实现了总成本降低 80%。 历史数据归档:将在线库(SSD 磁盘)数据归…...
accelerate 分布式技巧(一)
accelerate分布式技巧 简单使用 Accelerate是一个来自Hugging Face的库,它简化了将单个GPU的PyTorch代码转换为单个或多台机器上的多个GPU的代码。 Accelerate精确地抽象了与多GPU/TPU/fp16相关的模板代码,并保持Pytorch其余代码不变。 import torchim…...

密码找回安全
文章目录 密码找回安全任意秘密重置 密码找回安全 用户提交修改密码请求;账号认证:服务器发送唯一ID (例如信验证码)只有账户所有者才能看的地方,完成身份验证;身份验证:用户提交验证码完成身份验证;修改密码:用户修改密码。 任意秘密重置 登录metinfo4…...
Spring Boot + Vue的网上商城之商品管理
Spring Boot Vue的网上商城之商品管理 在网上商城中,商品管理是一个非常重要的功能。它涉及到商品的添加、编辑、删除和展示等操作。本文将介绍如何使用Spring Boot和Vue来实现一个简单的商品管理系统。 下面是一个实现Spring Boot Vue的网上商城之商品管理的思路…...
B站:提高你的词汇量:如何用英语谈论驾驶
视频链接:提高你的词汇量:如何用英语谈论驾驶_哔哩哔哩_bilibili 英文音标中文hood/hʊd/n. 汽车的引擎盖go over仔细检查;认真讨论;用心思考There are plenty of videos go over this.有很多关于这个的视频unlockvt. 发现;揭开&…...
大前端面试注意要点
前端面试:从IT专家角度全面解析 在数字时代,前端开发工程师的角色变得越来越重要。随着网站和应用程序的复杂性和交互性越来越高,对具有专业技能的前端开发人员的需求也在不断增长。对于正在寻找前端开发职位的开发者,或者正在寻…...
稻盛和夫-如是说(读书笔记)
本书解答的核心问题: “今天,我们需要的不是短期有效的处方。作为人,何谓正确?作为人,应该如何度过人生?这才是一切问题的根源。 有几个要点和认知比较深的地方谈一谈。 1、利他 类似于阳明心学࿰…...
Jmeter是用来做什么的?
JMeter是一个开源的Java应用,主要用于性能测试和功能测试。它最初由Apache软件基金会设计用于测试Web应用程序,但现在已经扩展到其他测试功能。JMeter的主要功能如下: 性能测试:性能测试是JMeter的核心功能,主要分为两…...
Docker基础教程
Docker基础教程 Docker简介 Docker基本操作 Docker应用 Docker自定义镜像 Docker compose 为什么使用DockerDocker简介安装DockerDocker的中央仓库Docker镜像操作Docker容器操作准备一个web项目创建MySQL容器创建Tomcat容器将项目部署到TomcatDocker数据卷DockerfileDock…...

Linux命令200例:who用于显示当前登录到系统的用户信息
🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌。CSDN专家博主,阿里云社区专家博主,2023年6月csdn上海赛道top4。 🏆数年电商行业从业经验,历任核心研发工程师࿰…...

HGDB-修改分区表名称及键值
瀚高数据库 目录 环境 文档用途 详细信息 环境 系统平台:N/A 版本:4.5.7 文档用途 使用存储过程拼接SQL,修改分区名称、分区键值、并重新加入主表,适用于分区表较多场景。 详细信息 说明:本文档为测试过程࿱…...

1分钟了解音频、语音数据和自然语言处理的关系
机器学习在日常场景中的应用 音频、语音数据和自然语言处理这三者正在不断促进人工智能技术的发展,人机交互也逐渐渗透进生活的每个角落。在各行各业包括零售业、银行、食品配送服务商)的多样互动中,我们都能通过与某种形式的AI(…...

线性代数的学习和整理20,关于向量/矩阵和正交相关,相似矩阵等
目录 1 什么是正交 1.1 正交相关名词 1.2 正交的定义 1.3 正交向量 1.4 正交基 1.5 正交矩阵的特点 1.6 正交矩阵的用处 1 什么是正交 1.1 正交相关名词 orthogonal set 正交向量组正交变换orthogonal matrix 正交矩阵orthogonal basis 正交基orthogonal decompositio…...

OpenCV之ellipse函数
ellipse函数用来在图片中绘制椭圆、扇形,有两个重载函数。 函数原型1: void cv::ellipse( InputOutputArray img,Point center,Size axes,double angle,double startAngle,double …...

git快速查看某个文件修改的所有commit
1. git blame file git blame 可以显示历史修改的每一行记录,有时候我们只想了解某个文件一共提交几次commit,只显示commit列表,这种方式显然不满足要求。 2.git log常规使用 (1)显示整个project的所有commit (2)显示某个文件的所有commit 这是git log不添加参数的常规…...
云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?
大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢
随着互联网技术的飞速发展,消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁,不仅优化了客户体验,还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用,并…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...