转成String类型的几种方式

1. String.valueOf()

  • String.valueOf():基本数据类型或包装类都可以通过 String.valueOf() 方法转为字符串表示形式,如:
java 复制代码
int i = 22;
String stringValue = String.valueOf(i);
System.out.println("String value: " + stringValue);
  • 基本数据类型转成字符串表示形式时,可以使用String.valueOf(xx),但不能直接使用 xx.toString()方法(基本数据类型不具备方法和属性),也不能通过(String)进行强制类型转化

  • String.valueOf(Object) 是在 Object.toString() 的基础上实现的,源码:

java 复制代码
public static String valueOf(Object obj) {
    return (obj == null) ? "null" : obj.toString();
}
  • Object.toString() 方法的不同点在于,String.valueOf(Object) 不用担心对象是否为 null 这一问题,可以安全地处理 null 对象

2. 包装类-toString()

java 复制代码
Integer i = 22;
System.out.println("String value: " + i.toString());
  • 可以使用对应包装类的toString()方法,比如使用Integer.toString(int i)方法
  • 注意:当使用 object.toString() 时,必须确保 object 不是 null 值,否则会抛出 NullPointerException 异常

3. 使用字符串拼接

  • 基本数据类型和包装类都可以使用 i + "" 的方式将基本数据类型转换成字符串
java 复制代码
int i = 22;
String str = i + "";
System.out.println(str);

4. 强制类型转换 (String) object

  • 基本数据类型不能直接通过强制类型转换 (String) 转换为字符串,因为基本数据类型并不是对象,可以将基本数据类型包装为对应的包装类,然后再强制转换为字符串
  • 用强制类型转换(String) object方法时,最好通过 instanceof 做类型检查以确保可以转换,否则可能抛出 ClassCastException

5. 总结:

  • 基本数据类型转换成String:
java 复制代码
1、String.valueOf()
2、使用字符串拼接:i + ""
  • 包装类转String:
java 复制代码
1、String.valueOf()
2、toString()
3、使用字符串拼接:i + ""
4、强制类型转换 (String) object

6. 基本数据类型和包装类

  • 基本数据类型和它们对应的包装类之间存在自动装箱和自动拆箱的机制,使得基本数据类型与包装类之间的转换更加方便

1、自动装箱: 将基本数据类型转换为包装类

java 复制代码
int intValue = 25;
Integer integerValue = intValue;

2、自动拆箱: 将包装类转换为基本数据类型

java 复制代码
Integer integerValue = 25;
int intValue = integerValue;

3、手动装箱: 显式地将基本数据类型转换为包装类

java 复制代码
int intValue = 25;
Integer integerValue = Integer.valueOf(intValue);
// 或者
Integer integer = new Integer(intValue);

4、手动拆箱: 显式地将包装类转换为基本数据类型

java 复制代码
Integer integerValue = 25;
int intValue = integerValue.intValue();
  • 自动装箱和自动拆箱使得基本数据类型与包装类之间的转换更加方便,可以直接赋值或进行算术运算。例如:
java 复制代码
Integer num1 = 10;  // 自动装箱
Integer num2 = 20;  // 自动装箱

int sum = num1 + num2;  // 自动拆箱和算术运算
System.out.println("Sum: " + sum);
相关推荐
copyer_xyf1 天前
Python 异常处理
前端·后端·python
llz_1121 天前
web-第三次课后作业
前端·后端·web
MageGojo1 天前
天气 API 接入实战:基于 ApiZero 实现实时天气、分钟级降水和 15 天预报查询
java·后端·spring·api 接口接入·接口实战
pe7er1 天前
软件设计不要“既要又要”
前端·后端·架构
柏舟飞流1 天前
Spring Boot 深入实践指南:从入门到工程化落地
spring boot·后端·firefox
IT_陈寒1 天前
Java Stream并行流的坑:我花了3小时才找到的线程安全问题
前端·人工智能·后端
橘子海全栈攻城狮1 天前
【最新源码】鸟博士微信小程序 023
spring boot·后端·web安全·微信小程序·小程序
Hiter_John1 天前
Golang的运算符
开发语言·后端·golang
皮皮林5511 天前
Dubbo 的 SPI 和 JDK 的 SPI 有什么区别?
后端
金銀銅鐵1 天前
用 Tkinter 实现一个罗马数字转整数的简单工具
后端·python