Java字符串连接运算符“的样式建议是什么?”+&引用;?

Java字符串连接运算符“的样式建议是什么?”+&引用;?,java,coding-style,Java,Coding Style,Java字符串连接运算符“+”的样式建议是什么 编辑:具体地说,是否应该使用它?这就是你的意思吗 "string1" + "string" 或者,如果你有长长的队伍 "a really long string....." + "another really long string......" + "ditto once again" + "the last one, I promise" 如果您有时间格式化此权限,则: "a really long string....."

Java字符串连接运算符“+”的样式建议是什么


编辑:具体地说,是否应该使用它?

这就是你的意思吗

"string1" + "string"
或者,如果你有长长的队伍

"a really long string....." +
"another really long string......" +
"ditto once again" +
"the last one, I promise"
如果您有时间格式化此权限,则:

"a really long string....."        +
"another really long string......" +
"ditto once again"                 +
"the last one, I promise"

基本上,每次使用
+
运算符时,应该在前后至少使用一个空格。如果在连接长字符串时使用它,请将其放在行的末尾。

这就是您的意思吗

"string1" + "string"
或者,如果你有长长的队伍

"a really long string....." +
"another really long string......" +
"ditto once again" +
"the last one, I promise"
如果您有时间格式化此权限,则:

"a really long string....."        +
"another really long string......" +
"ditto once again"                 +
"the last one, I promise"

基本上,每次使用
+
运算符时,应该在前后至少使用一个空格。如果在连接长字符串时使用它,请将其放在行的末尾。

只要您的团队成员对它感到满意。


因为没有“正确”的编码风格。但我同意您应该始终在字符串和运算符之间使用空格,以提高可读性。

只要您的团队成员对此感到满意。


因为没有“正确”的编码风格。但我同意您应该始终在字符串和运算符之间使用空格,以提高可读性。

如果性能受到影响,则总体建议不使用此表单,而是使用
StringBuilder
StringBuffer
(根据您的线程模型)。原因很简单:java中的字符串是不可变的,“+”操作符将在处理
S1+S2+…+形式的表达式时创建许多中间字符串对象序列号


[编辑:

如果性能受到影响,总体建议不要使用此表单,而是使用
StringBuilder
StringBuffer
(根据您的线程模型)。原因很简单:java中的字符串是不可变的,“+”操作符将在处理
S1+S2+…+形式的表达式时创建许多中间字符串对象序列号


[编辑:

Java思考(Eckel)说重载+运算符是使用StringBuilder实现的(尽管根据alphazero的回答,并非所有编译器都支持此操作),因此避免了多个字符串对象以及相关的内存使用和垃圾回收。考虑到这一点,我会回答我自己的问题,说+操作符可能很好,风格上是明智的。唯一需要注意的是+是该语言中重载的唯一实例,例外论可能是不使用它的一个次要原因。回顾过去,简洁性的优势在某些情况下非常重要,这需要考虑很多风格。

Java思考(Eckel)说重载+运算符是使用StringBuilder实现的(尽管并非所有编译器都支持alphazero的答案)这样就避免了多个字符串对象以及相关的内存使用和垃圾回收。考虑到这一点,我会回答我自己的问题,说+操作符可能很好,风格上是明智的。唯一需要注意的是+是该语言中重载的唯一实例,例外论可能是不使用它的一个次要原因。回想起来,简洁性的优势在某些情况下非常重要,这对很多风格都很重要。

以下Java的编码约定字符串应该像这样串联:

String str = "Long text line " 
             + "more long text.";
确保“+”运算符始终从下一行开始。

使用“+”操作符进行字符串连接是非常好的,有不同的库为它提供了其他结构,但对我来说这是最简单的方法

希望这有帮助

快乐编码


Brady

以下Java的编码约定字符串应该像这样连接:

String str = "Long text line " 
             + "more long text.";
确保“+”运算符始终从下一行开始。

使用“+”操作符进行字符串连接是非常好的,有不同的库为它提供了其他结构,但对我来说这是最简单的方法

希望这有帮助

快乐编码


布雷迪

你所说的“风格”到底是什么意思?你认为不应该使用它的原因是什么?你所说的“风格”到底是什么意思?你认为不应该使用它的原因是什么?(Oracle/Sun javac)编译器实际生成字节码,该字节码发出引用
StringBuilder.append的
+
运算符的
invokespecial
指令。使用javap,您会发现您的大多数答案都不正确。您不正确,因为JLS 15.18.1.2表明Oracle编译器正在执行可选优化。这是一个编译时优化。您的建议意味着无论是否执行优化,运行时的性能都很差。从目前可用的编译器来看,我不能代表所有人,但大多数(如果不是所有的话)编译器都会执行这种优化。如果您将否决票从
重写,“+”运算符将创建许多中间字符串对象
我将删除否决票,“+”运算符**可能**创建许多中间字符串对象
。不,我的建议显示了一种“风格”的编码,无论编译器/jvm如何,都将提供最佳性能。JLS是一个规范的文件。你可以保留你的否决票。(非常经典)我会坚持答案和JLS。它正好解决了OP的问题。(Oracle/Sun javac)编译器实际上生成字节码,为
+
操作符发出引用
StringBuilder.append
invokespecial
指令。使用javap,您会发现您的大多数答案都是错误的。您是错误的,因为JLS 15.18.1.2表明Oracle编译器正在执行可选优化。它是编译时优化