pol*_*nts 40 java string coding-style
假设我有两个char
变量,后来我想将它们连接成一个字符串.我就是这样做的:
char c1, c2;
// ...
String s = "" + c1 + c2;
Run Code Online (Sandbox Code Playgroud)
我见过有人说"" +
"诡计"是"丑陋"等等,你应该使用String.valueOf
或Character.toString
代替.我更喜欢这种结构,因为:
c1
并且c2
在视觉上处于同一水平
String.valueOf(c1) + c2
建议一些特别的东西 c1
真的有一个很好的论据为什么String.valueOf
或者Character.toString
更喜欢"" +
?
琐事:在java.lang.AssertionError
,下面一行出现7次,每次都有不同的类型:
this("" + detailMessage);
Run Code Online (Sandbox Code Playgroud)
Jos*_*Lee 26
你的论点很好; 这是Java语言中更具表现力的领域之一"" +
,正如您所发现的那样,成语似乎根深蒂固.
请参阅JLS中的字符串连接.一个表达式
"" + c1 + c2
Run Code Online (Sandbox Code Playgroud)
相当于
new StringBuffer().append(new Character(c1).toString())
.append(new Character(c2).toString()).toString()
Run Code Online (Sandbox Code Playgroud)
除了不需要所有中间对象(因此效率不是动机).规范说实现可以使用StringBuffer
或不使用.由于此功能已内置于语言中,因此我认为没有理由使用更详细的表单,尤其是在已经详细的语言中.
Joa*_*uer 19
该构造的问题在于它通常不表达意图.
它表示String与另一个值的串联,但串联通常不是此行的目标.
在您演示的特定情况下,连接实际上是目标,因此此代码确实表达了意图.
在这种方法(String s = "" + intValue;
)的更常见的使用中,连接仅仅是容忍的副作用,而转换intValue
是实际目标.而一个简单的String.valueOf(intValue)
表达意图更加清晰.
我更喜欢将其String.valueOf
用于单次转换-但在您的情况下,您确实需要串联。
但是,我建议此版本将消除所有潜在的歧义:
String s = c1 + "" + c2;
Run Code Online (Sandbox Code Playgroud)
这样一来,就不可能有人在串联之前考虑是否将c1和c2加在一起。