Java字符串连接运算符“的样式建议是什么?”+&引用;?
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....."
编辑:具体地说,是否应该使用它?这就是你的意思吗
"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编译器正在执行可选优化。它是编译时优化