package strings; public class ToString { public static void main(String[] args) { Integer num = 0; int loop = 200000; long startTime1 = System.currentTimeMillis(); for (int i = 0; i < loop; i++) { String s1 = num + ""; } long endTime1 = System.currentTimeMillis(); System.out.println("+的方式耗时:" + (endTime1 - startTime1) + "ms"); for (int i = 0; i < loop; i++) { String s = String.valueOf(num); } long endTime2 = System.currentTimeMillis(); System.out.println("String.valueOf()的方式耗时:" + (endTime2 - endTime1) + "ms"); for (int i = 0; i < loop; i++) { String s = num.toString(); } long endTime3 = System.currentTimeMillis(); System.out.println("toString()的方式耗时:" + (endTime3 - endTime2) + "ms"); } }
运行结果是:
以上实例中,String.valueOf() 直接调用了底层的Integer.toString()方法,不过其中会先判断是否为空;
+"" 由StringBuilder实现,先调用append() 方法,然后调用toString()方法获得字符串;
num.toString()直接调用了 Integer.toString()方法,所以效率较高;
转换效率:num.toString() > String.valueOf() > +""
总结: 避免使用 +"" 的转换方式,最好是使用基本数据类型自带的 toString() 方法哦!
—— 本文转载自微信公众号“Java后端技术”