草庐IT

StringBuffer与stringBuilder

全部标签

javascript - + 运算符的性能是否低于 StringBuffer.append()

在我的团队中,我们通常像这样进行字符串连接:varurl=//somedynamicallygeneratedURLvarsb=newStringBuffer();sb.append("clickhere");显然以下内容更具可读性:varurl=//somedynamicallygeneratedURLvarsb="clickhere";但是JS专家声称+运算符的性能不如StringBuffer.append()。这是真的吗? 最佳答案 您的示例不是一个好示例,因为性能不太可能有显着差异。在您的示例中,可读性应该胜过性能,因为一个

java - 为什么 stringbuilder 在使用空字符后停止添加元素?

当我使用空字符'\u0000'时,stringbuilder将停止追加新元素。例如:StringBuilder_stringBuilder=newStringBuilder();_stringBuilder.append('\u0000');_stringBuilder.append('a');System.out.println("."+_stringBuilder+".");返回.我知道不应该打印空值(或者像空字符串值一样打印)但在这种情况下,为什么stringbuilder无法添加更多元素?注意:我在ubuntu上使用的是jdk1.6.0_38。 最佳

c# - 有趣的 OutOfMemoryException 与 StringBuilder

我需要在一个循环中不断构建大字符串并将它们保存到数据库中,这目前偶尔会产生OutOfMemoryException。这里的基本情况是我根据一些数据使用XmlWriter和StringBuilder创建一个字符串。然后我从外部库中调用一个方法,将这个xml字符串转换为其他字符串。之后,转换后的字符串将保存到数据库中。整个过程针对不同的数据循环重复执行大约100次。字符串本身并不太大(每个小于500kByte),并且在此循环期间进程内存没有增加。但是,偶尔我会在StringBuilder.Append中得到一个OutOfMemeoryExcpetion。有趣的是,这个异常不会导致崩溃。我可

c# - RegEx、StringBuilder 和大对象堆碎片

如何在大字符串中运行大量RegEx(以查找匹配项)而不导致LOH碎片?它是.NETFramework4.0,所以我使用的是StringBuilder,所以它不在LOH中,但是只要我需要在其上运行RegEx,我就必须调用StringBuilder.ToString()这意味着它将在LOH中。这个问题有什么解决办法吗?像这样处理大字符串和正则表达式的长时间运行的应用程序几乎是不可能的。解决这个问题的思路:在思考这个问题时,我想我找到了一个肮脏的解决方案。在给定时间我只有5个字符串,这5个字符串(大于85KB)将被传递给RegEx.Match。由于新对象不适合LOH中的空白空间而发生碎片,这

c# - 如何明智地使用 StringBuilder?

我对使用StringBuilder类有点困惑,首先:Astringobjectconcatenationoperationalwayscreatesanewobjectfromtheexistingstringandthenewdata.AStringBuilderobjectmaintainsabuffertoaccommodatetheconcatenationofnewdata.Newdataisappendedtotheendofthebufferifroomisavailable;otherwise,anew,largerbufferisallocated,datafromt

Python字符串类,如C#中的StringBuilder?

Python中是否有类似C#中的StringBuilder的字符串类? 最佳答案 没有一对一的相关性。一篇非常好的文章请看EfficientStringConcatenationinPython:BuildinglongstringsinthePythonprogamminglanguagecansometimesresultinveryslowrunningcode.InthisarticleIinvestigatethecomputationalperformanceofvariousstringconcatenationmet

java - 什么是比较 StringBuilder 对象的有效方法

我有两个StringBuilder对象,我需要在Java中比较它们。我知道我能做的一种方法是sb1.toString().equals(sb2.toString());但这意味着我正在创建两个String对象,有没有更好的方法来比较StringBuilder对象。可能不需要创建额外的对象? 最佳答案 您显然已经知道,StringBuilder从java.lang.Object继承equals(),因此StringBuilder。equals()仅在将相同对象作为参数传递时才返回true。它确实不比较两个StringBuilder的内

java - 什么时候应该明确使用 StringBuilder?

这个问题在这里已经有了答案:StringBuildervsStringconcatenationintoString()inJava(20个回答)StringconcatenationinJava-whentouse+,StringBuilderandconcat[duplicate](9个回答)关闭8年前。据我了解,当我执行Stringbaz="foo"+"bar"+"123"时,Java编译器会在内部将表达式替换为StringBuilder。然而,我们的Java老师告诉我们,始终明确地使用StringBuilder是一种好习惯...我是否正确假设我将仅在连接内部循环时需要显式使用S

java - 字符串连接是否经过优化以使用现有的 StringBuilders?

我有以下代码:StringBuilderstr=newStringBuilder("foo");for(Fieldf:fields){str.append("|"+f);}str.append("|"+bar);Stringresult=str.toString();我知道编译器会优化字符串连接"|"+f并将其替换为StringBuilder。然而,在Java8中会创建一个新的StringBuilder还是使用现有的str?Java9怎么样? 最佳答案 默认情况下在java-9中不会有StringBuilder用于字符串连接;它是如

java - 类型不匹配 : cannot convert from StringBuilder to String

此方法返回给定URL的来源。privatestaticStringgetUrlSource(Stringurl){try{URLlocalUrl=null;localUrl=newURL(url);URLConnectionconn=localUrl.openConnection();BufferedReaderreader=newBufferedReader(newInputStreamReader(conn.getInputStream()));Stringline="";Stringhtml;StringBuilderma=newStringBuilder();while((li