草庐IT

StringBuffer与stringBuilder

全部标签

java - StringBuilder vs.concat vs. "+"运算符在 eclipse 中的相对性能与命令行不同?

我正在阅读有关Java编译器如何在可能的情况下将与“+”运算符连接的字符串编译为StringBuilder实例的信息,以及这如何使使用简单的“+”运算符更好,因为它们compiletothesamecode.(除非您在while循环中构建字符串,在这种情况下显然最好使用StringBuilder。)我还读到字符串上的.concat方法是最差的choiceallthetime(以至于它被Findbugs变成了一个错误!)。所以我决定自己在eclipse中编写一个小的java类来测试它。我的结果让我有点吃惊。我发现,如果我在eclipse中与在命令行中遵守并运行它们,则不同的方法相对更快或

java - 编译器何时不隐式使用 StringBuffer/StringBuilder?

我听说编译器(或者是JVM?)会自动使用StringBuilder进行一些字符串连接。什么时候才是明确宣布的合适时机?我不需要StringBuffer来实现线程安全。谢谢。 最佳答案 编译器会自动将它用于任何使用“+”的字符串连接。如果你想在一个循环中连接,你通常会显式地使用它。例如:StringBuilderbuilder=newStringBuilder();for(Stringname:names){builder.append(name);builder.append(",");}if(builder.length()>0)

java - 如何创建用 ""初始化的 StringBuilder 数组?

如何通过调用args构造函数来创建数组?StringBuilder[]sb=newStringBuilder[100];但是如果我检查sb[0]它是空的。我希望sb[0]到sb[99]用“”初始化。以下导致错误:StringBuilder[]sb=newStringBuilder[100]("");编辑:或者我必须这样做:for(StringBuilderit:sb){it=newStringBuilder("");} 最佳答案 您的所有代码都将初始化一个数组,为100个StringBuilder做好准备。它实际上不会填充它。你可以

java - stringbuilder 可以容纳的最大字符数

我需要写10,000x30,000个字符。单个stringbuilder是否能够容纳所有字符,还是我应该考虑一组stringbuilder?我无权访问测试用例,因此我无法亲自验证它。希望我能在这里找到答案。提前致谢。编辑:我尝试使用循环添加10000x30000个字符。我得到以下异常。Exceptioninthread"main"java.lang.OutOfMemoryError:Javaheapspaceatjava.util.Arrays.copyOf(Arrays.java:2367)atjava.lang.AbstractStringBuilder.expandCapacit

java - 多线程修改StringBuilder

我问的问题与DifferencebetweenStringBuilderandStringBuffer有关但不一样。我想看看如果StringBuilder同时被两个线程修改会发生什么。我编写了以下类:publicclassThreadTester{publicstaticvoidmain(String[]args)throwsInterruptedException{RunnablethreadJob=newMyRunnable();ThreadmyThread=newThread(threadJob);myThread.start();for(inti=0;i最初我在StringCo

java - StringBuilder 构造函数接受一个 StringBuilder 对象——为什么?

类StringBuilder定义了四个构造函数,它们都不接受StringBuilder,但以下编译:StringBuildersb=newStringBuilder(newStringBuilder("Hello"));这是否意味着匿名StringBuilder对象被编译器以某种方式在内部转换为字符串? 最佳答案 AStringBuilder是CharSequence(它实现了那个接口(interface)),和thereisaconstructortakingaCharSequence.这就是给定代码编译的原因:StringBui

Java:不带 toString 的 StringBuffer 到 byte[]

标题说明了一切。有什么方法可以在不在中间使用String的情况下从StringBuilder转换为byte[]?问题是我正在管理非常大的字符串(数百万个字符),然后我有一个循环在最后添加一个char并获得byte[]。将StringBuffer转换为String的过程使得这个循环非常非常非常慢。有什么办法可以实现吗?提前致谢! 最佳答案 正如许多人已经建议的那样,您可以使用CharBuffer类,但分配一个新的CharBuffer只会让您的问题变得更糟。相反,您可以直接将StringBuilder包装在CharBuffer中,因为S

c# - 从 C# : should I pass StringBuilder or use unsafe code? 调用非托管函数

我有一个C#程序需要将char缓冲区传递给非托管函数。我发现了两种似乎工作可靠的方法,但我不确定应该选择哪一种。这是非托管函数的签名。extern"C"__declspec(dllexport)intgetNextResponse(char*buffer);第一个选项是将缓冲区定义为StringBuilder,如下所示。//atclasslevel...[DllImport("mydll.dll")]staticexternintgetNextResponse(StringBuilderbuffer);//inmainmethodbody...StringBuildersb=newSt

StringBuilder类- StringBuffer类- 正则表达式- Date类 (日期)- SimpleDateFormat类(日期格式化的类)- Calendar类 (日历类)

目录stringbuilder类StringBuffer类正则表达式日期日期格式化的类Calendar类:(日历类)是一个抽象类stringbuilder类概念:可以改变的字符串(这里跟string可以区分开,string创建的是不可改变的字符串)底层:使用的是一个byte类型的数组,默认长度16(string的底层使用final修饰的数组)如果超过长度16:数组会自动扩容扩容的时机:当添加的数据的长度大于此时数组的长度扩容的机制:当前数组长度的2倍+2构造方法:StringBuilder():构造一个没有字符的字符串构建器,初始容量为16个字符。StringBuilder(Stringstr

java StringBuilder 和 StringBuffer 万字详解(深度讲解)

目录一、前言二、StringBuffer类介绍和溯源1.介绍:2.溯源:三、StringBuffer类常用构造器1.StringBuffer()2.StringBuffer(intcapacity)3.StringBuffer(Stringstr)4.演示5.Debug四、StringBufferVSString类(重要)1.StringBuffer类与String类的比较:2.StringBuffer类与String类的相互转化:五、StringBuffer类常用方法0.前言1.intlength()2.intcapacity()3.StringBufferappend(...)4.Stri