TL;DR)
最推荐、最简洁、最安全的方法是使用 String.valueOf()。

short myShort = 123; String myString = String.valueOf(myShort); // 推荐方式
详细方法解析
以下是几种主要的转换方法,并附有代码示例和优缺点分析。
使用 String.valueOf() (最推荐)
这是最常用、最简洁且性能最好的方法。String 类提供了一个重载的 valueOf() 方法,专门用于将基本数据类型(包括 short)转换为字符串。
代码示例:
public class ShortToStringExample {
public static void main(String[] args) {
short number = 10025;
String strNumber = String.valueOf(number);
System.out.println("原始 short 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
System.out.println("转换后的 String 类型: " + strNumber.getClass().getName());
}
}
优点:

- 简洁明了:代码一行即可完成,可读性高。
- 性能最佳:
String.valueOf()是专门为此优化的方法,通常比其他方法(如字符串拼接)效率更高。 - 非空安全:它不会像
toString()方法那样在传入null时抛出NullPointerException(虽然short是基本类型,不存在null,但这个原则适用于所有valueOf()重载方法)。 - 标准做法:这是 Java 社区公认的标准做法。
缺点:
- 几乎没有缺点,是完成此任务的“正确”方式。
使用 Short.toString() (也非常好)
Short 是 short 的包装类,该类提供了一个静态的 toString() 方法,可以直接将 short 值转换为字符串。
代码示例:
public class ShortToStringExample2 {
public static void main(String[] args) {
short number = -50;
String strNumber = Short.toString(number);
System.out.println("原始 short 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
优点:

- 意图清晰:代码明确表示了“将 Short 转换为字符串”的意图。
- 性能也很好:与
String.valueOf()性能相差无几,可以认为是等价的。
缺点:
- 相比
String.valueOf(),它多了一个类名Short.,稍微长一点点,但这只是风格上的微小差异。
使用空字符串拼接 (简单但不推荐)
这是初学者常用的一种方法,通过将 short 与一个空字符串 进行拼接,利用 Java 的自动类型转换机制来得到 String 结果。
代码示例:
public class ShortToStringExample3 {
public static void main(String[] args) {
short number = 777;
String strNumber = "" + number;
System.out.println("原始 short 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
优点:
- 极其简单:对于初学者来说,非常直观,容易理解。
缺点:
- 性能稍差:Java 在处理字符串拼接时,会创建一个临时的
StringBuilder对象,然后调用其append()方法,虽然现代 JVM 对这种简单拼接做了优化(称为 "string concatenation optimization"),使其性能接近StringBuilder,但它仍然比直接调用String.valueOf()或Short.toString()有一点点额外开销。 - 代码风格问题:在一些严格的代码规范中,这种方式被认为是不够优雅的。
- 可读性稍差:不如前两种方法直接地表达“类型转换”的意图。
使用 Short 对象的 toString() (不推荐)
这种方法首先需要将 short 装箱成 Short 对象,然后再调用 toString() 方法,这是最啰嗦、效率最低的方法,应该避免使用。
代码示例:
public class ShortToStringExample4 {
public static void main(String[] args) {
short number = 99;
// 1. 先创建一个 Short 对象 (装箱)
// 2. 再调用该对象的 toString() 方法
String strNumber = new Short(number).toString();
System.out.println("原始 short 值: " + number);
System.out.println("转换后的 String 值: " + strNumber);
}
}
缺点:
- 效率极低:它会创建一个不必要的
Short对象,这个过程称为“装箱”(Autoboxing),会带来额外的内存和性能开销,对于频繁调用的代码,这会严重影响性能。 - 代码冗长:代码最复杂,可读性最差。
性能对比
为了更直观地展示性能差异,这里有一个简单的 JMH (Java Microbenchmark Harness) 基准测试结果(趋势性说明,具体数值可能因环境而异):
| 方法 | 性能表现 | 备注 |
|---|---|---|
String.valueOf(short) |
最快 | 最佳选择,无额外开销。 |
Short.toString(short) |
极快 | 与 String.valueOf() 几乎一样快。 |
"" + short |
稍慢 | JVM 会优化,但仍有微小开销。 |
new Short(short).toString() |
最慢 | 因装箱操作而产生显著开销。 |
结论与最佳实践
| 方法 | 推荐度 | 理由 |
|---|---|---|
String.valueOf() |
首选,最简洁、最高效、最标准的做法。 | |
Short.toString() |
优秀,性能和可读性都很好,是完全可以接受的替代方案。 | |
"" + short |
不推荐,虽然简单,但性能和代码风格上不是最佳选择。 | |
new Short(short).toString() |
避免,性能差,代码冗余,是典型的反模式。 |
最终建议:
在您的日常 Java 开发中,请始终使用 String.valueOf(yourShortVariable) 来将 short 转换为 String,这是最专业、最可靠的选择。
