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

包装类笔记

包装类

5.1 概述

Java 提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:

基本类型对应的包装类(位于 java. Lang 包中)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
除了这个 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、利他 类似于阳明心学&#xff0…...

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。 🏆数年电商行业从业经验,历任核心研发工程师&#xff0…...

HGDB-修改分区表名称及键值

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

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不添加参数的常规…...

加强版python连接飞书通知——本地电脑PC端通过网页链接打开本地已安装软件(调用注册表形式,以漏洞扫描工具AppScan为例)

前言 如果你想要通过超链接来打开本地应用,那么你首先你需要将你的应用添入windows注册表中(这样网页就可以通过指定代号来调用程序),由于安全性的原因所以网页无法直接通过输入绝对路径来调用本地文件。 一、通过创建reg文件自动配置注册表 创建文本文档,使用记事本打开…...

Jmeter进阶使用指南-使用断言

Apache JMeter是一个流行的开源负载和性能测试工具。在JMeter中,断言(Assertions)是用来验证响应数据是否符合预期的一个重要组件。它是对请求响应的一种检查,如果响应不符合预期,那么断言会标记为失败。 以下是如何在…...

44、Flink之module模块介绍及使用示例和Flink SQL使用hive内置函数及自定义函数详细示例--网上有些说法好像是错误的

Flink 系列文章 1、Flink 部署、概念介绍、source、transformation、sink使用示例、四大基石介绍和示例等系列综合文章链接 13、Flink 的table api与sql的基本概念、通用api介绍及入门示例 14、Flink 的table api与sql之数据类型: 内置数据类型以及它们的属性 15、Flink 的ta…...

电脑入门: 路由器初学者完全教程

路由器初学者完全教程 本文以Cisco2620为例,讲述了路由器的初始化配置以及远程接入的配置方法,探讨了如何使用内部网络的DHCP服务功能为远程拨入的用户分配地址信息以及路由器常见故障的排除技巧。 (本文假定Cisco2620路由器为提供远…...

如何查找GNU C语言参考手册

快捷通道 标准C/C参考手册 GNU C参考手册HTML版 GNU C参考手册PDF版本 HTML版本部分目录预览 从GNU官网找那个GNU C参考手册 访问gnu.org 点击软件 下滑找到gnu-c-manual或者在这个页面Ctrl-f搜索"manual" 点进去即可看到HTML版本和PDF版本...

弄懂软件设计模式(一):单例模式和策略模式

前言 软件设计模式和设计原则是十分重要的,所有的开发框架和组件几乎都使用到了,比如在这小节中的单例模式就在SpringBean中被使用。在这篇文章中荔枝将会仔细梳理有关单例模式和策略模式的相关知识点,其中比较重要的是掌握单例模式的常规写法…...

Redis----布隆过滤器

目录 背景 解决方案 什么是布隆过滤器 布隆过滤器的原理 一些其他运用 背景 比如我们在观看新闻或者刷微博的时候,会不停地给我们推荐新的内容,我们发现几乎没有重复的,说明后台已经进行了去重处理,基于如何去重&#xff0c…...

day 49 | 647. 回文子串 ● 516.最长回文子序列

647. 回文子串 dp含义:dp如果是表示i-j的序列中回文子串的个数的话,当新来一个后只能判定出来是整体的回文,内部的无法判断,所以用bool表示整体比较恰当。 递推公式:由于i,j是由i1,j-1决定的,所…...

【网络编程】C++实现网络通信服务器程序||计算机网络课设||Linux系统编程||TCP协议(附源码)

TCP网络服务器 🐍 1.程序简洁🦎2. 服务端ServerTcp程序介绍🦖3.线程池ThreadPool介绍🦕 4.任务类Task介绍🐙5. 客户端Client介绍🦑6.运行结果:🦐 7. 源码🦞7.1 serverTcp…...

C语言类型占内存大小

C语言类型占内存大小 C语言数据类型sizeof测试基本数据类型所占字符大小运行结果数据模型 C语言数据类型 sizeof测试基本数据类型所占字符大小 #include <stdio.h>int main() {char a;short b;int c;long d;float e;double f;printf("char %d\n", sizeof (a…...