Java 在串联中使用哪一个-String或StringBuffer

Java 在串联中使用哪一个-String或StringBuffer,java,string,object,stringbuffer,Java,String,Object,Stringbuffer,我在我的项目中看到了java代码,它通过各种参数构造了一个文件名 String file = null; String fileDirSeperator = System.getProperty("file.separator"); String pwd = System.getProperty("user.dir"); file = pwd + fileDirSeperator + "properties" + fileDirSeperator + folder_name + file_nam

我在我的项目中看到了java代码,它通过各种参数构造了一个文件名

String file = null;
String fileDirSeperator = System.getProperty("file.separator");
String pwd = System.getProperty("user.dir");
file = pwd + fileDirSeperator + "properties" + fileDirSeperator + folder_name + file_name;
我想知道我是否应该让你
StringBuffer
而不是
String
。我知道向字符串添加任何内容都会创建新对象,所以我想我应该为您
StringBuffer

我可以知道你的建议吗

而且

在上述文件名构造中,是否将创建6个对象(每个变量一个)?

使用而不是您提到的选项

当然,对于这样一个小的用例,使用而不是您提到的选项并不重要


当然,对于这样一个小的用例,它实际上并不重要,这是无关紧要的。除非在循环中运行数千次,否则性能并不重要。
字符串
连接语法将是最直接的


当连接存在性能问题时,请使用
StringBuilder

这与此无关。除非在循环中运行数千次,否则性能并不重要。
字符串
连接语法将是最直接的


当连接存在性能问题时,请使用
StringBuilder

在对成千上万个操作进行基准测试后,您还可以使用字符串连接。从Java6开始,性能有了很大的提高


在对成千上万个操作进行基准测试后,您还可以使用字符串连接。从Java6开始,性能有了很大的提高



如果您只连接6个字符串,我不会太在意性能。使用
+
,不要使它过于复杂。@BobbyDigital不适用于这种情况。生成的字节码将已经为您使用
StringBuilder
。@LuiggiMendoza:我看到了!实际上,您唯一需要关心字符串与
+
连接的时候是在循环/递归调用中,尤其是在将结果保存到临时变量中时。对于像这样的一次性操作,您最终将编写与编译器生成的代码相同的代码。如果您只连接6个字符串,我不会太在意性能。使用
+
,不要使它过于复杂。@BobbyDigital不适用于这种情况。生成的字节码将已经为您使用
StringBuilder
。@LuiggiMendoza:我看到了!实际上,您唯一需要关心字符串与
+
连接的时候是在循环/递归调用中,尤其是在将结果保存到临时变量中时。对于这样的一次性操作,您最终将编写与编译器生成的代码相同的代码。-1:在这种情况下,编译器将为您使用
StringBuilder
。检查生成的字节码。只有当编译器无法进行任何代码优化时,才使用
StringBuilder
。@LuiggiMendoza你能指出一个引用吗?@LuiggiMendoza说真的,这不是很难复制的!!!我在问你们是否有任何权威链接来解释这个选择。顺便说一句,谢谢你的-1:)复制只需不到5分钟。无论如何,这里有一个链接:@LuiggiMendoza我想说复制不到2次,但正如我所解释的,这不是我的问题。谢谢你的链接:)。顺便说一句,对于这样简单的用例,并不是每个人都有阅读字节码或反编译类文件的习惯:)-1:在这种情况下,编译器将为您使用
StringBuilder
。检查生成的字节码。只有当编译器无法进行任何代码优化时,才使用
StringBuilder
。@LuiggiMendoza你能指出一个引用吗?@LuiggiMendoza说真的,这不是很难复制的!!!我在问你们是否有任何权威链接来解释这个选择。顺便说一句,谢谢你的-1:)复制只需不到5分钟。无论如何,这里有一个链接:@LuiggiMendoza我想说复制不到2次,但正如我所解释的,这不是我的问题。谢谢你的链接:)。顺便说一句,并不是每个人都有阅读字节码或反编译此类简单用例的习惯:)您的两个链接都说明最好使用StringBuilder。链接是好的,但你的答案与之相反。给出了什么?我应该指出,尽管文章说使用StringBuilder,但第一篇文章说使用它是因为JDK5,第二篇文章指出了在使用if语句或for循环构造字符串时使用StringBuilder的原因。海报使用字符串的方式他应该坚持连接两个链接都说明最好使用StringBuilder。链接是好的,但你的答案与之相反。给出了什么?我应该指出,尽管文章说使用StringBuilder,但第一篇文章说使用它是因为JDK5,第二篇文章指出了在使用if语句或for循环构造字符串时使用StringBuilder的原因。海报使用字符串的方式,他应该使用串联
 file = pwd + fileDirSeperator + "properties" + fileDirSeperator + folder_name + file_name;