1. 方法概述
String.valueOf()
是 Java 中一个简单粗暴的类型转换工具,专门用于将各种数据类型转换为字符串。它提供了多个重载方法,覆盖了几乎所有基本数据类型和对象类型。⚠️ 需要注意的是,当处理 char[]
数组时,还可以通过指定偏移量和长度来转换数组的一部分,避免全量转换的性能开销。
核心功能
- ✅ 支持基本类型:
boolean
,char
,double
,float
,int
,long
- ✅ 支持数组类型:
char[]
(支持部分转换) - ✅ 支持对象类型:
Object
(调用对象的toString()
方法) - ❌ 不支持直接转换
byte[]
或其他数组类型(需先处理)
2. 可用方法签名
以下是 String.valueOf()
的所有重载方法签名,按参数类型分类:
// 基本类型转换
public static String valueOf(boolean b)
public static String valueOf(char c)
public static String valueOf(double d)
public static String valueOf(float f)
public static String valueOf(int i)
public static String valueOf(long l)
// 数组类型转换
public static String valueOf(char[] data)
public static String valueOf(char[] data, int offset, int count)
// 对象类型转换
public static String valueOf(Object obj)
关键参数说明
offset
:起始索引(从 0 开始)count
:要转换的字符数量- ⚠️ 踩坑提示:当
offset
或count
超出数组范围时会抛出IndexOutOfBoundsException
3. 示例
通过一个简单的测试用例展示基本用法:
@Test
public void whenCallValueOf_thenCorrect() {
long l = 200L;
assertEquals("200", String.valueOf(l));
}
进阶用法:部分字符数组转换
@Test
public void convertCharArrayPartially() {
char[] chars = {'H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd'};
// 从索引 6 开始转换 5 个字符
String partial = String.valueOf(chars, 6, 5);
assertEquals("World", partial);
}
对象转换原理
当传入 Object
类型时,实际调用的是对象的 toString()
方法:
Object obj = new Object();
String str = String.valueOf(obj); // 等价于 obj.toString()
💡 经验之谈:对于自定义对象,务必重写
toString()
方法,否则会得到类似java.lang.Object@1a2b3c4d
的无意义输出。