在Java开发过程中,字符串和基本类型的互相转换是几乎每个项目都会用到的操作,无论是处理前端传入的参数,还是读取配置文件中的数据,都需要掌握对应的转换方法。

基本类型转字符串的方法
1. 使用String.valueOf()方法
这是最推荐的转换方式,该方法支持所有基本类型的重载,会返回对应的字符串表示,而且不会出现空指针异常。
public class BasicToString {
public static void main(String[] args) {
int num = 100;
double price = 29.5;
boolean flag = true;
char ch = 'A';
// 基本类型转字符串
String numStr = String.valueOf(num);
String priceStr = String.valueOf(price);
String flagStr = String.valueOf(flag);
String chStr = String.valueOf(ch);
System.out.println("int转字符串结果:" + numStr);
System.out.println("double转字符串结果:" + priceStr);
System.out.println("boolean转字符串结果:" + flagStr);
System.out.println("char转字符串结果:" + chStr);
}
}
2. 使用基本类型的包装类toString()方法
每个基本类型对应的包装类都提供了静态的toString()方法,也可以实现转换,但是需要注意如果传入的参数是null会抛出异常。
public class WrapperToString {
public static void main(String[] args) {
int age = 25;
// 使用Integer包装类的toString方法
String ageStr = Integer.toString(age);
System.out.println("年龄字符串:" + ageStr);
double score = 88.5;
// 使用Double包装类的toString方法
String scoreStr = Double.toString(score);
System.out.println("分数字符串:" + scoreStr);
}
}
3. 字符串拼接空字符串
这种方式比较简洁,通过基本类型和空字符串拼接,会自动转换为字符串类型,适合简单的场景使用。
public class ConcatToString {
public static void main(String[] args) {
long count = 1000L;
// 拼接空字符串转换
String countStr = count + "";
System.out.println("数量字符串:" + countStr);
float height = 175.5f;
String heightStr = height + "";
System.out.println("身高字符串:" + heightStr);
}
}
字符串转基本类型的方法
1. 使用包装类的parseXxx()方法
这是最常用的字符串转基本类型的方式,每个包装类都提供了对应的parse方法,比如Integer.parseInt()、Double.parseDouble()等,但是要求字符串内容必须符合对应类型的格式,否则会抛出NumberFormatException异常。
public class StringToBasic {
public static void main(String[] args) {
String numStr = "123";
// 字符串转int
int num = Integer.parseInt(numStr);
System.out.println("转换后的int值:" + num);
String priceStr = "45.8";
// 字符串转double
double price = Double.parseDouble(priceStr);
System.out.println("转换后的double值:" + price);
String boolStr = "true";
// 字符串转boolean
boolean flag = Boolean.parseBoolean(boolStr);
System.out.println("转换后的boolean值:" + flag);
}
}
2. 使用包装类的valueOf()方法
包装类的valueOf()方法会返回对应的包装类对象,如果需要基本类型,可以自动拆箱,这种方式同样需要处理格式异常的问题。
public class StringToWrapper {
public static void main(String[] args) {
String idStr = "2024001";
// valueOf返回Integer对象,自动拆箱为int
int id = Integer.valueOf(idStr);
System.out.println("用户ID:" + id);
String rateStr = "0.85";
double rate = Double.valueOf(rateStr);
System.out.println("折扣率:" + rate);
}
}
转换注意事项
- 字符串转数值类型时,字符串内容只能包含对应类型的合法字符,比如转int的字符串不能包含字母、小数点等,否则会抛出NumberFormatException。
- 如果字符串可能为null或者空字符串,转换前需要先做非空判断和格式校验,避免程序崩溃。
- boolean类型的转换比较特殊,Boolean.parseBoolean()方法只有当字符串是"true"(忽略大小写)时返回true,其他所有情况都返回false,不会抛出异常。
- 如果要转换的字符串是十六进制、八进制格式的数值,可以使用Integer.parseInt(String s, int radix)方法指定进制进行转换。
public class RadixParse {
public static void main(String[] args) {
// 十六进制的字符串转int
String hexStr = "1A";
int hexNum = Integer.parseInt(hexStr, 16);
System.out.println("十六进制1A转十进制:" + hexNum);
// 八进制的字符串转int
String octStr = "12";
int octNum = Integer.parseInt(octStr, 8);
System.out.println("八进制12转十进制:" + octNum);
}
}
常见转换场景对比
以下是不同转换方式的适用场景对比:
| 转换方向 | 转换方法 | 适用场景 | 注意事项 |
|---|---|---|---|
| 基本类型转字符串 | String.valueOf() | 所有场景,尤其是需要避免空指针的场景 | 支持所有基本类型,无空指针风险 |
| 基本类型转字符串 | 包装类.toString() | 明确参数不为null的场景 | 参数为null时会抛出NullPointerException |
| 字符串转基本类型 | parseXxx() | 需要基本类型的场景 | 字符串格式错误会抛NumberFormatException |
| 字符串转基本类型 | valueOf() | 需要包装类对象的场景 | 返回包装类对象,可自动拆箱 |