8种基本类型的包装类(与String的转换)

news2024/11/19 10:34:32
java针对8种基本数据类型,定义了相应的引用类型:包装类(封装类),有了类的特点,就能调用类中的方法,java才是真正的面向对象。
基本数据类型	   包装类

byte			Byte

short			Short

int				Integer

long			Long

float			Float

double			Double

boolean			Boolean

char			Character

其中,Byte、Short、Integer、Long、Float、Double 的父类是 NumberBoolean、Character 继承自 Object类

在这里插入图片描述

在这里插入图片描述


2、基本数据类型 与 包装类之间的转换

2.1、为什么需要转换

一方面,在有些场景下,需要使用基本数据类型对应的包装类的对象,

此时,就需要将基本数据类型的变量 转换为 包装类的对象,

比如,ArrayList的add(Object obj) 或者 Object类的equals(Object obj);

另一方面,对于包装类来说,既然我们使用的是对象,那么对象是不能进行 + - * / 等运算的,

所以,为了能够进行这些运算,就需要将包装类的对象转换为基本数据类型的变量。

2.2、如何转换

基本数据类型 --> 包装类 :使用包装类的构造器 或者 调用包装类的valueOf(xxx xx)

包装类 --> 基本数据类型 :调用包装类的xxxValue()

注意:原来使用基本数据类型变量的位置,改成包装类以后,对于成员变量来说,其默认值变化了

public void test1(){
	int i1 = 10;
	Integer i2 = new Integer(i1);
	System.out.println(i2.toString());

	float f1 = 12.3F;
	Float f2 = new Float(f1);
	System.out.println(f2.toString());

	String s1 = "32.1";
	Float f3 = new Float(s1);
	System.out.println(f3.toString());
}


public void test2(){
	int i1 = 10
	Integer i2 = Integer.valueOf(i1);
	System.out.println(i2.toString());

	int i3 = i2.intValue();
	i3 = i3 + 1;

	flaot f1 = 12.3F;
	Float f2 = Float.valueOf(f1);
	System.out.println(f2.toString());

	f3 = f3.floatValue();
	f3 = f3 + 1;

	Boolean b1 = Boolean.valueOf(true);
}

jdk5.0新特性:自动装箱、自动拆箱

public void test2(){

	// 自动装箱:基本数据类型 --> 包装类
	int i1 = 10;
	Integer i2 = i1; // 自动装箱
	System.out.println(i2.toString());

	Integer i3 = i1 +1; // 自动装箱

	Boolean b1 = true; // 自动装箱

	Float f1 = 12.3F; // 自动装箱


	// 自动拆箱:包装类 --> 基本数据类型
	int i4 = i2; // 自动拆箱

	boolean b2 = b1; // 自动拆箱
}

3、String 与 基本数据类型 之间的转换

包装类中的parseXxx方法,可以将字符串类型的数据 --> 对应的基本数据类型

但是,在将字符串转换为其他类型前,一定要确认字符串里面的内容能否正常转换

比如,你想把"asdfghjk"这个字符串 转换为 int类型,那TM能行吗?这时候就会报错的!

3.1、String --> 基本类型数据

class Method{
	public static void main(String[] args) {
		
		byte b   = Byte.parseByte("11");
		
		short s  = Short.parseShort("141");
 
		int i    = Integet.parseInt("430");

		long l   = Long.parseLong("11211");

		float f  = Float.parseFloat("66.6F");

		double d  = Double.parseDouble("666.666");

		boolean boo = Boolean.parseBoolean("true");

		System.out.println("b = " + b); // b = 11
		System.out.println("s = " + s); // s = 141
		System.out.println("i = " + i); // i = 430
		System.out.println("l = " + l); // l = 11211
		System.out.println("f = " + f); // f = 66.6
		System.out.println("d = " + d); // d = 666.666
		System.out.println("boo = " + boo); // boo = 11
	}
}
咳咳

这里没有String 的转换 --> char

因为,在八大包装类中,除了Character类外,其他的7种包装类中都有parseXxx方法,

所以,如果,你想将,字符串类型的数据 转换成 char类型的数据,可以通过String类中的toCharArray()charAt() 来做到,

字符串.toCharArray():将字符串 转换为 字符数组

字符串.charAt(下标):获取,字符串中的某位置的字符元素

如下:


class Demo {
    public static void main(String[] args) {

        String string = "CSDN_yyds";

		// `字符串.toCharArray()`:将字符串转换为字符数组
        char[] charArray = string.toCharArray();
		System.out.println("string字符串一共有" + charArray.length + "个字符.");

		for (int i = 0; i < charArray.length; i++) {
            System.out.println("第" + (i + 1) + "个字符是:" + charArray[i]);
        }

		// 用,字符串.charAt(下标),获取字符串中某位置的字符元素
        char temp_char_0 = string.charAt(0);
        char temp_char_1 = string.charAt(1);
				...
				...
        char temp_char_8 = string.charAt(8);

		System.out.println("string字符串第一个元素为:" + temp_char_0);
        System.out.println("string字符串第二个元素为:" + temp_char_1);
				...
				...
        System.out.println("string字符串第九个元素为:" + temp_char_8);

	}
}

3.2、基本类型数据 --> String

# 1、直接与空字符串进行拼接
		// byte --> String
        byte temp_byte = 127;
        String temp_string_0 = 127 + "";
 
        // short --> String
        short temp_short = 141;
        String temp_string_1 = temp_short + "";
 
        // int --> String
        int temp_int = 428;
        String temp_string_2 = temp_int + "";
 
        // long --> String
        long temp_long = 11211;
        String temp_string_3 = temp_long + "";
 
        // float --> String
        float temp_float = 135.0F;
        String temp_string_4 = temp_float + "";
 
        // double --> String
        double temp_double = 433.0;
        String temp_string_5 = temp_double + "";
 
        // char --> String
        char temp_char = 'A';
        String temp_string_6 = temp_char + "";
 
        // boolean --> String
        boolean temp_boolean = true;
        String temp_string_7 = temp_boolean + "";


# 2String类的valueOf方法
		String string_0 = String.valueOf(temp_byte) + "_EX";
		String string_1 = String.valueOf(temp_short) + "_EX";
		String string_2 = String.valueOf(temp_int) + "_EX";
		String string_3 = String.valueOf(temp_long) + "_EX";
		String string_4 = String.valueOf(temp_float) + "_EX";
		String string_5 = String.valueOf(temp_double) + "_EX";
		String string_6 = String.valueOf(temp_char) + "_EX";
		String string_7 = String.valueOf(temp_boolean) + "_EX";


3.3、String --> 包装类


可以先将 String 转换为 基本数据类型,

再将 基本数据类型 转换为 对应的包装类

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

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

相关文章

Infuse通过Alist添加115网盘资源

说明 通过Alist代理管理115网盘&#xff0c;Infuse再添加Alist代理的115网盘的WebDAV 准备一台Linux服务器安装Alist 我这里用的华为云CentOS7&#xff0c;使用Docker容器 安装Alist docker run -d --restartalways -v /etc/alist:/opt/alist/data -p 5244:5244 -e PUID0 …

SegmentAnything官网demo使用vue+python实现

一、效果&准备工作 1.效果 没啥好说的&#xff0c;低质量复刻SAM官网 https://segment-anything.com/ 需要提一点&#xff1a;所有生成embedding和mask的操作都是python后端做的&#xff0c;计算mask不是onnxruntime-web实现的&#xff0c;前端只负责了把rle编码的mask解…

[架构之路-275]:五张图向你展现软件开发不仅仅是编码,而是一个庞大的系统工程

目录 一、软件开发是组织架构的一部分&#xff0c;是为业务服务的 二、软件开发是一个系统工程&#xff0c;需要组织各种组织内的资源 三、目标软件是一个复杂的系统 四、软件开发过程本身是一个系统工程 五、目标软件的测试验证是一个系统工程 一、软件开发是组织架构的一…

MYSQL笔记:约束条件

MYSQL笔记&#xff1a;约束条件 主键约束 不能为空&#xff0c;值必须是不同的&#xff08;唯一性&#xff09; 一个表只能修饰一个主键 PRIMARY KEY自增约束 AUTO_INCREMENT唯一键约束 可以为空 unique非空约束 not null 默认值约束 default 外键约束 foreign key …

基于图像掩膜和深度学习的花生豆分拣(附源码)

目录 项目介绍 图像分类网络构建 处理花生豆图片完成预测 项目介绍 这是一个使用图像掩膜技术和深度学习技术实现的一个花生豆分拣系统 我们有大量的花生豆图片&#xff0c;并以及打好了标签&#xff0c;可以看一下目录结构和几张具体的图片 同时我们也有几张大的图片&…

Qt网络编程-ZMQ的使用

不同主机或者相同主机中不同进程之间可以借助网络通信相互进行数据交互&#xff0c;网络通信实现了进程之间的通信。比如两个进程之间需要借助UDP进行单播通信&#xff0c;则双方需要知道对方的IP和端口&#xff0c;假设两者不在同一主机中&#xff0c;如下示意图&#xff1a; …

【C语言】SYSCALL_DEFINE3(socket, int, family, int, type, int, protocol)

一、SYSCALL_DEFINE3与系统调用 在Linux操作系统中&#xff0c;为了从用户空间跳转到内核空间执行特定的内核级操作&#xff0c;使用了一种机制叫做"系统调用"&#xff08;System Call&#xff09;。系统调用是操作系统提供给程序员访问和使用内核功能的接口。例如&…

OnlyOffice-8.0版本深度测评

OnlyOffice 是一套全面的开源办公协作软件&#xff0c;不断演进的 OnlyOffice 8.0 版本为用户带来了一系列引人瞩目的新特性和功能改进。OnlyOffice 8.0 版本在功能丰富性、安全性和用户友好性上都有显著提升&#xff0c;为用户提供了更为强大、便捷和安全的文档处理和协作环境…

【Docker】02 镜像管理

文章目录 一、Images镜像二、管理操作2.1 搜索镜像2.1.1 命令行搜索2.1.2 页面搜索2.1.3 搜索条件 2.2 下载镜像2.3 查看本地镜像2.3.1 docker images2.3.2 --help2.3.3 repository name2.3.4 --filter2.3.5 -q2.3.6 --format 2.4 给镜像打标签2.5 推送镜像2.6 删除镜像2.7 导出…

React18原理: 渲染与更新时的重点关注事项

概述 react 在渲染过程中要做很多事情&#xff0c;所以不可能直接通过初始元素直接渲染还需要一个东西&#xff0c;就是虚拟节点&#xff0c;暂不涉及React Fiber的概念&#xff0c;将vDom树和Fiber 树统称为虚拟节点有了初始元素后&#xff0c;React 就会根据初始元素和其他可…

1g的视频怎么压缩到200m?3个步骤解决~

把1G的文件压缩到200M&#xff0c;可以有效节省存储空间&#xff0c;加快传输速度&#xff0c;在某些情况下&#xff0c;压缩文件可以提供更好的安全性&#xff0c;例如通过加密或压缩算法保护文件内容。下面就向大家介绍3个好用的方法。 方法一&#xff1a;使用嗨格式压缩大师…

立体感十足的地图组件,如何设计出来的?

以下是一些设计可视化界面中的地图组件更具备立体感的建议&#xff1a; 使用渐变色&#xff1a; 可以使用不同的渐变色来表现地图的高低差异&#xff0c;例如使用深蓝色或深紫色来表示海底&#xff0c;使用浅绿色或黄色来表示低地&#xff0c;使用橙色或红色来表示高地。 添加…

springboot173疫苗发布和接种预约系统

简介 【毕设源码推荐 javaweb 项目】基于springbootvue 的 适用于计算机类毕业设计&#xff0c;课程设计参考与学习用途。仅供学习参考&#xff0c; 不得用于商业或者非法用途&#xff0c;否则&#xff0c;一切后果请用户自负。 看运行截图看 第五章 第四章 获取资料方式 **项…

数据分析基础之《pandas(7)—高级处理2》

四、合并 如果数据由多张表组成&#xff0c;那么有时候需要将不同的内容合并在一起分析 1、先回忆下numpy中如何合并 水平拼接 np.hstack() 竖直拼接 np.vstack() 两个都能实现 np.concatenate((a, b), axis) 2、pd.concat([data1, data2], axis1) 按照行或者列…

[超分辨率重建]ESRGAN算法训练自己的数据集过程

一、下载数据集及项目包 1. 数据集 1.1 文件夹框架的介绍&#xff0c;如下图所示&#xff1a;主要有train和val&#xff0c;分别有高清&#xff08;HR&#xff09;和低清&#xff08;LR&#xff09;的图像。 1.2 原图先通过分割尺寸的脚本先将数据集图片处理成两个相同的图像…

政安晨:示例演绎机器学习中(深度学习)神经网络的数学基础——快速理解核心概念(一){两篇文章讲清楚}

进入人工智能领域免不了与算法打交道&#xff0c;算法依托数学基础&#xff0c;很多小伙伴可能新生畏惧&#xff0c;不用怕&#xff0c;算法没那么难&#xff0c;也没那么玄乎&#xff0c;未来人工智能时代说不得人人都要了解算法、应用算法。 本文试图以一篇文章&#xff0c;…

分享76个表单按钮JS特效,总有一款适合您

分享76个表单按钮JS特效&#xff0c;总有一款适合您 76个表单按钮JS特效下载链接&#xff1a;https://pan.baidu.com/s/1CW9aoh23UIwj9zdJGNVb5w?pwd8888 提取码&#xff1a;8888 Python采集代码下载链接&#xff1a;采集代码.zip - 蓝奏云 学习知识费力气&#xff0c;收集…

(坑点!!!)给定n条过原点的直线和m条抛物线(y=ax^2+bx+c,a>0),对于每一条抛物线,是否存在一条直线与它没有交点,若有,输出直线斜率

题目 思路: 1、区间端点可能是小数的时候,不能直接利用加减1将 < 转化为 <=,例如,x < 1.5 不等价于 x <= 2.5 2、该题中k在(b - sqrt(4 * a * c), b + sqrt(4 * a * c) 中,注意是开区间,那么可以将左端点向上取整,右端点向下取整,即sqrt(4 * a * c)向下取…

Netty中的常用组件(三)

ChannelPipeline 基于Netty的网路应用程序中根据业务需求会使用Netty已经提供的Channelhandler 或者自行开发ChannelHandler&#xff0c;这些ChannelHandler都放在ChannelPipeline中统一 管理&#xff0c;事件就会在ChannelPipeline中流动&#xff0c;并被其中一个或者多个Chan…

Mysql-Explain-使用说明

Explain 说明 explain SELECT * FROM tb_category_report;id&#xff1a;SELECT识别符&#xff0c;这是SELECT查询序列号。select_type&#xff1a;表示单位查询的查询类型&#xff0c;比如&#xff1a;普通查询、联合查询(union、union all)、子查询等复杂查询。table&#x…