Java 在串联中使用哪一个-String或StringBuffer
我在我的项目中看到了java代码,它通过各种参数构造了一个文件名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
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;