在Java中,我们常日可以通过多种办法完成一项任务。例如,我们可以通过Integer.toString()方法将int(原始整数)转换为String,如下所示:
public String intToStringV1(int v) { return Integer.toString(v); }
或者,通过一种相称常见的技巧(代码审查员会在这里皱起眉头),即将一个空字符串与整数连接起来:

public String intToStringV2(int v) { return "" + v; }
其余,String.valueOf()也可以用来完成这个任务,如下所示:
public String intToStringV3(int v) { return String.valueOf(v); }
还有一种更加晦涩的办法是通过String.format(),如下所示:
public String intToStringV4(int v) { return String.format("%d", v); }
这些方法也适用于装箱整数,即Integer工具。由于装箱/拆箱操作是昂贵的,我们努力避免它们,除非它们确实必要。但是,你永久不知道何时拆箱操作可能会“悄悄进行”并毁坏你的运用程序性能。为了验证这一说法,想象一下,对付前面的每种方法,我们也都有一个同源的版本,它吸收一个Integer而不是int。以下是个中一个(为了简洁起见,别的部分被省略了):
public String integerToStringV1(Integer vo) { return Integer.toString(vo); }
对这些所有方法进行基准测试,结果如下图所示:
图1.16 - 将int转换为String的基准测试结果
从这里我们可以得出两个明确的结论:
1. 利用String.format()非常慢,该当避免用于int和Integer。
2. 所有利用Integer的办理方案都比利用int原始类型的办理方案慢。因此,纵然对付这样大略的情形,也要避免不必要的拆箱,由于它们可能会导致严重的性能丢失。
这些基准测试的结果是在配备Windows 10的Intel(R) Core(TM) i7-3612QM CPU @ 2.10GHz机器上得到的,但请在不同的机器上进行测试,由于结果高度依赖于机器。接下来,让我们改变话题,谈谈Java的区域设置(locales)。