Java SE(十一)之包装类(各种类型之间的转换)

news2024/11/29 12:54:18

文章目录

  • Object类 &Number类
    • 1.Object
    • 2.Number类
  • 包装类,装箱,拆箱
    • 1.手动装箱/拆箱
    • 2.自动装箱/ 拆箱
  • 应用——常见包装类
    • 1.Integer类
    • 2.Character类
    • 3.实战——各种类型之间的转换
      • (1)int和Integer相互转换
      • (2) char与int的互相转化
      • (3)基本数据类型转化为String
      • (4)String转化为基本数据类型

Object类 &Number类

八种基本数据结构都分别有对应的包装类,属于引用数据类型。包装类层次结构如下

在这里插入图片描述
所以先介绍Object类和Number类

1.Object

2.Number类

常用方法

方法含义
xxx xxxValue()将 Number 对象转换为xxx数据类型的值并返回。如 int intValue()
valueOf()返回一个 Number 对象指定的内置数据类型
toString()以字符串形式返回值
parseInt()将字符串转换为int型

注意下面的Integer等类都继承了Number类

包装类,装箱,拆箱

Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能。(指路基本数据类型和引用数据类型区别)

所以 Java 为每种基本数据类型分别设计了对应的类,称为包装类

装箱:基本数据类型转换为包装类的过程称为装箱( int 包装成 Integer 类的对象)
拆箱:包装类变为基本数据类型的过程称为拆箱( Integer 类的对象简化为 int)

八种基本数据类型对应的包装类如下:

基本类型对应的包装类(位于java.lang包中)
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean

1.手动装箱/拆箱

手动的意思就是按照创建对象那套方法来处理包装类,但目前已经很少用了(Java5 提出了自动装箱),看一下示例吧:

// 将2023这个基本数据类型进行装箱,基本数据类型--->包装类
 Integer i = new Integer(2023);

  // 拆箱,将引用数据类型---> 基本数据类型
 int retValue = i.intValue();
 System.out.println(retValue); //2023
  
 // 也可以转换为不同类型的
 float f = i.floatValue();
 System.out.println(f); //2023.0

2.自动装箱/ 拆箱

目前都是自动装箱、拆箱

 // 自动装箱
 Integer x = 2023; // 等同于:Integer i = new Integer(2023);
 System.out.println(x);

  // 自动拆箱,x是包装类型,y是基本数据类型
  int y = x;
  System.out.println(y);

应用——常见包装类

主要讲解常见的Integer类和Character类

1.Integer类

Integer 类在对象中包装了一个基本类型 int 的值

(1)常用方法
注意基本都是static类,所以可以直接通过类调用。前几个方法很重要!

方法名说明
static int parseInt(String s)将数字字符串转换为 int 数值
string toString(int i)返回一个表示该 Integer 值的 String 对象
static Integer valueOf(String s)返回保存指定String值的 Integer 对象
static String toBinaryString(int i)将整型 i 转成二进制(另外还有转成8进制,16进制的方法)
static Integer valueOf(int i)返回表示指定的 int 值的 Integer 实例
int intValue()以 int 类型返回该 Integer 的值

Byte、Short、Long、Float、Double、Boolean等和Integer方法都相似!

e.g.

String str = "456";
int num = Integer.parseInt(str);    // 将字符串转换为int类型的数值
int i = 789;
String s = Integer.toString(i);

另外parseInt还可以转化为相应的进制数,因为完整的方法名是
static int parseInt(String s, int radix),其中radix是指定的基数(基数可以是 10, 2, 8, 或 16 等进制数)

(2)常量

前两个比较重要!

常量含义
MAX_VALUE值为 2 31 2^{31} 231-1 的常量,它表示 int 类型能够表示的最大值。
MIN_VALUE值为 − 2 31 -2^{31} 231 的常量,它表示 int 类型能够表示的最小值
SIZE用来以二进制补码形式表示 int 值的比特位数
TYPE表示基本类型 int 的 Class 实例

2.Character类

常用方法

方法含义
char charValue()将Character转成char
String toString()将Character转成String
static boolean isDigit(char ch)判断ch是不是数字
static boolean isLetter(char ch)判断ch是不是字母
boolean isLetterOrDigit(int codePoint)确定指定字符(Unicode 代码点)是否为字母或数字
boolean isLowerCase(char ch)确定指定字符是否为小写字母
boolean isUpperCase(char ch)确定指定字符是否为大写字母
char toLowerCase(char ch)使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为小写
char toUpperCase(char ch)使用来自 UnicodeData 文件的大小写映射信息将字符参数转换为大写

3.实战——各种类型之间的转换

综合上面的方法,总结平时转换的需求

(1)int和Integer相互转换

这个上面提到过,可以手动也可以自动装箱

public static void main(String[] args) {
        int m = 500;
        Integer obj = new Integer(m);  // 手动装箱
        int n = obj.intValue();  // 手动拆箱
        System.out.println("n = " + n);
    }

(2) char与int的互相转化

因为两者都是基本数据类型,可以直接转化,一般是通过隐式转化或者强制转化

char - -> int,可以隐式转化,但是注意此时转化的是字符的ASCII值

char c1='a';//定义一个char类型
int i1 = c1;//char自动类型转换为int
System.out.println("char自动类型转换为int后的值等于"+i1);

如果是数字字符转化为int,常见的技巧是-'0'

char c='5';//定义一个char类型
int i = c1-'0';//char转换为int,为整型5

同理如果想要int转char,可以+'0'

int m = 5;
char c = m+'0';

(3)基本数据类型转化为String

拿int转String举例,一般有三种方法:

  • 方式一:直接在数字后加一个空字符串
  • 方式二:通过String类静态方法valueOf()——推荐
  • 方法三:包装类的toString方法如Integer.toString()——推荐
 // int 转换为 String
public static void main(String[] args) {
        int number = 100;
        //方式1
        String s1 = number + "";
        System.out.println(s1);
        //方式2  public static String valueOf(int i)
        String s2 = String.valueOf(number);
        System.out.println(s2);
        // 方式三, public static String toString(int i)
        String s3 = Integer.toString(number);
        System.out.println(s3);
    }

(4)String转化为基本数据类型

除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型,例如:

  • public static int parseInt(String s):将字符串参数转换为对应的int基本类型。
  • public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。

拿String转int举例,转换方式:

  • 方式一:通过Integer静态方法parseInt()进行转换(推荐)
  • 方式二:先将字符串数字转成Integer,再调用valueOf()方法
// String 转换为 int
 public static void main(String[] args) {
        String s = "100";
        //方式1  public static int parseInt(String s)
        int y = Integer.parseInt(s);
        System.out.println(y);
        
        //方式2:String --- Integer --- int
        Integer i = Integer.valueOf(s);
        int x = i.intValue();  //public int intValue()
        System.out.println(x); 
    }

参考链接:https://blog.csdn.net/qq_44715943/article/details/116331282

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/523884.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

20230514-SmartChat测试效果图

E:\20230514-SmartChat测试效果图您好,我是SmartChat,新生代智能机器人,通过运用自然语言处理、机器学习和人工智能等高精尖技术,可以与您进行自然、流畅、有趣的对话,帮助您获取所需的信息和服务。无论您想要写商业计…

如何提高跨职能团队的绩效和成果

在50年代,当计算机仍被视为复杂的计算器时,西北互助人寿保险公司就计算机对未来业务的影响进行了研究。有趣的是,该公司的首席执行官为这项研究设立了一个不同寻常的团队——由来自多个部门的员工组成,每个人都看到了计算机在保险…

redis批处理任务,多线程 or pipeline

前言 工作中使用redis的时候遇到一个问题,如果我们要对存储在redis中的一批数据进行操作,为了加快处理的速度,我们一般有两种方式: 建立多个线程,使用多个连接发送请求使用redis提供的pipeline 引发了一个小思考&…

股票量价关系基础知识9----图解各阶段量价关系:价平量平

价平量平是指股价涨跌幅度不大,成交量持平,反映多空双方受不明朗因素困扰,均对后市走势持观望态度,投资者在此阶段不宜盲目入市,但具体到某一阶段又略有差异。 一、上涨初期的价平量平 (一)形态…

深度学习之图像分类(二):ZFNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

SpringBoot 2.0 + Nacos + Sentinel 流控规则集中存储

前言 Sentinel 原生版本的规则管理通过API 将规则推送至客户端并直接更新到内存中,并不能直接用于生产环境。不过官方也提供了一种 Push模式,扩展读数据源ReadableDataSource,规则中心统一推送,客户端通过注册监听器的方式时刻监…

四轴飞控DIY Mark4 - 优化后续二

四轴飞控DIY Mark4 - 优化后续二 1. 源由2. 优化方案3. 实现细节3.1 锡箔屏蔽3.2 热缩管固定3.3 电池地接地3.4 更换飞控 4. 整体效果4.1 配置4.2 Roll&Pitch波形4.3 电机波形 5. 结论6. 附录:FPV Quad GPS cable sheilding 1. 源由 Betaflight BN880 GPS 简单测…

Qt扫盲-QPieSeries理论总结

QPieSeries理论总结 一、概述二、简单的使用1. 创建 QPieSeries 并赋值2. 自定义显示 QPieSlice3. 初始化绘图设备&并关联上图4. 把绘图设备框架放置在 Gui 控件上5. 完整代码 三、镂空饼状图1. 初始化 QPieSeries 和 QPieSlice2. 初始化绘图设备&并关联上图3. 把绘图设…

深度学习之图像分类(四):AlexNet

本专栏介绍基于深度学习进行图像识别的经典和前沿模型,将持续更新,包括不仅限于:AlexNet, ZFNet,VGG,GoogLeNet,ResNet,DenseNet,SENet,MobileNet&#xff0c…

Python地理数据处理 22:基于arcpy批量操作(四)

批量裁剪 1. 批量裁剪进阶2. 统计运算3. 栅格批量缩小n倍4. 建立属性表(简化、普适)5. 计算土地利用未变化区域(LUCC) 1. 批量裁剪进阶 代码描述:遍历a文件夹下的所有tif影像,并使用每个a文件夹中的tif影像…

MobileOne(CVPR 2023)原理与代码解析

paper:MobileOne: An Improved One millisecond Mobile Backbone official implementation:https://github.com/apple/ml-mobileone third-party implementation:mmpretrain/mobileone.py at main open-mmlab/mmpretrain GitHub 前言 …

在Ubuntu Kylin系统中安装并使用minicom

1、minicom的安装 首先在命令窗口中输入:minicom -s 如果显示的是:程序“minicom”尚未安装,您可以使用一下命令安装:sudo apt install minicom 这时需要minicom安装包 sudo apt-get install minicom 2、minicom的配置 sudo minicom -s # 打开minicom配置界面 3、配置…

(第44册)Java程序设计应用开发

书名:Java程序设计应用开发 书号:978-7-113-29847-0 作者:张西广,夏敏捷,罗菁 编著 出版日期:2023年1月 目前学习和关注 Java 语言的人越来越多,Java 语言已是目前世界上最为流行的程序开发语言之一。由于具有功能…

用于半监督体积医学图像分割的动量对比体素表示学习

文章目录 Momentum Contrastive Voxel-Wise Representation Learning for Semi-supervised Volumetric Medical Image Segmentation摘要本文方法Voxel-Wise Contrastive ObjectiveDimensional Contrastive ObjectiveConsistency Loss总损失 实验结果 Momentum Contrastive Voxe…

可以白嫖的语音识别开源项目whisper的搭建详细过程 | 如何在Linux中搭建OpenAI开源的语音识别项目Whisper

原文来自我个人的博客。 1、前提条件 服务器为GPU服务器。点击这里跳转到我使用的GPU服务器。我搭建 whisper 选用的是 NVIDIA A 100显卡,4GB显存。 Python版本要在3.8~3.11之间。 输入下面命令查看使用的Python版本。 python3 -V2、安装Anaconda 为啥要安装A…

ORACLE数据库长连接客户端持久的CLOSE_WAIT

前言 根据以往的项目构造,业务层数据库基本使用长连接形式进行批量操作。大部分周期有执行的链接基本正常。再长期的内测中也没有发生CLOSE_WAIT的现象。 上线后采用的数据库使用了新的版本,发现产生CLOSE_WAIY。根据开发经验和网上搜索,发…

『手撕 Mybatis 源码』01 - 基本原理与搭建

MyBatis的架构设计 Api接口层:提供API 增加、删除、修改、查询等接口,通过API接口对数据库进行操作 例如下面这些操作 sqlSession.selectOne(statementId, param); mapperProxy.findByCondition(param);数据处理层:解析sql根据调用请求完成…

机器学习模型的评估

(1)数据划分 将可用数据划分为三部分:训练集、验证集和测试集。在训练数据上训练模型。在验证数据上评估模型。模型准备上线之前,在测试数据上最后测试一次 不将数据划分为两部分,即训练集和测试集?在训练…

Java基础(二十三):反射机制

Java基础系列文章 Java基础(一):语言概述 Java基础(二):原码、反码、补码及进制之间的运算 Java基础(三):数据类型与进制 Java基础(四):逻辑运算符和位运算符 Java基础(五):流程控制语句 Java基础(六)&#xff1…

Linux内存管理 (1):内核镜像线性映射的建立

文章目录 1. 前言2. 分析背景3. 内核镜像线性映射的建立过程3.1 预备工作:内核解压缩3.2 建立内核镜像区域的线性映射3.2.1 定位内核入口3.2.2 建立内核线性映射前的其它启动工作3.2.2.1 将 CPU 设为 SVC 模式,且禁用 IRQ FIQ 中断3.2.2.2 获取处理器类…