【发布时间】:2012-01-16 13:26:18
【问题描述】:
我知道String.valueOf(int) 启用缓存并且通常不会导致创建额外的对象,但是("" + 1) 是否获得了某种编译器优化?
应该使用哪一个?
编辑:String.valueOf(int) 不启用缓存,Integer.valueof(int) 可以。
【问题讨论】:
标签: java type-conversion
我知道String.valueOf(int) 启用缓存并且通常不会导致创建额外的对象,但是("" + 1) 是否获得了某种编译器优化?
应该使用哪一个?
编辑:String.valueOf(int) 不启用缓存,Integer.valueof(int) 可以。
【问题讨论】:
标签: java type-conversion
它们都是等价的,更多的是个人品味问题。就个人而言,我更喜欢 String.valueOf(int)。
【讨论】:
"" + 1 在我看来是一个坏习惯,据我所知,它没有以任何方式进行优化。
坚持使用String.valueOf(int)。
【讨论】:
选择显式转换而不是隐式转换。
String.valueOf(int) 告诉你它在做什么。
虽然,我总是使用Integer.toString(int),因为我将其视为原始int 的toString 方法。
【讨论】:
不,String.valueOf 不执行任何缓存。但是,它比"" + 1(也不执行任何缓存)更可读,因为它说明了你想要做什么。
"" + 1 谈论字符串连接和空字符串,这两者都与您的目标无关 - 即获取整数的值,作为 String。
String.valueOf 准确地表达了你想要做什么,所以使用它。
【讨论】:
使用String.valueOf(int) 对应用程序来说是合理的最佳选择。
""+i 可能更适合您,除非您有大量时间和资源有限的设备,否则节省您的时间可能比节省一微秒的 CPU 时间更有价值。
【讨论】: