我阅读了一些有关Java编程语言中String和StringBuilder优缺点的文章。在其中一篇文章中,作者提到:StringBuilderisnotThread-safe,soinmultiplethreadsuseStringBuffer.很遗憾,我无法理解这意味着什么。您能否解释一下String、StringBuilder和StringBuffer之间的区别,尤其是在“线程安全”的上下文中。如果您能用代码示例进行描述,我将不胜感激。 最佳答案 如果多个线程正在修改StringBuilder的同一个实例,结果可能会出乎意料-即
StringBuffervsStringBuilderVsStringTokenizer在内部实现上有什么区别。什么时候使用这些。敬请期待答案。更新:-我也在浏览源代码。 最佳答案 StringBuffer-在JDK1.0中引入-是线程安全的(它的所有方法都是同步),而StringBuilder-自JDK1.5-不是。所以一般情况下推荐使用后者。StringTokenizer的目的与前两者完全不同:将字符串切割成片段,而不是组装。正如@Henning指出的那样,它从JDK1.5开始也“退休”了——建议改用String.split。
我有不同类型的名字。喜欢ABCBCD,EFGHGF,HGFHJK我想用"and"替换最后的,。所以,格式将是这样的ABCBCD,EFGHGF&HGFHJK我试过这个names="JonBenda,JonWetchler,ThomasLeibig"StringBuildersbd=newStringBuilder();String[]n=getNames.split("\\s+");System.out.println(n.length);for(inti=0;i 最佳答案 为什么要把它复杂化?您可以使用String#lastInde
我正在试验一种进行静态分析的工具。该工具适用于字节码而不是源代码。(不过,我也有源代码)。该工具从字节码输出一些行号,现在我需要一种简单的方法来映射回源代码。Netbeans/Eclipse一直这样做(当我单击包含的库中的方法时,IDE会将我带到源代码(如果它可用)),所以我知道这是可能的。我只是想不出办法。例如,考虑以下helloworld程序:packagemypackage;importjava.io.*;classMyMainClass{publicstaticvoidmain(String[]args){BufferedReaderin=newBufferedReader(n
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。StringBuilder之间的差异和StringBuffer在Java中有据可查,并且已被toucheduponinStackOverflow基本上,StringBuilder是StringBuffer的非同步副本,具有几乎相同的接口(interface),因为它旨在作为的快速替代品字符串缓冲区。它们的API实际上是相同的,它们实际上是当前JDK中相同
基本上,我想知道哪种方法更好,for(inti=0;i或Stringover_9000_blahs="";for(inti=0;i还是有我不知道的更好的方法? 最佳答案 由于您只写入System.out,第一种方法更好但是如果性能对您很重要,请使用下面的方法(System.out.println是同步的并使用锁定-可以阅读更多关于它的信息here和here)。如果你想稍后使用“大字符串”或提高性能,使用StringBuilder会更干净.(见下文),anycaseString+将由编译器转换为StringBuilder(更多细节he
您好,我正在尝试在划分字符串生成器并打印该字符串生成器后进行打印,让我看看我的代码,string.append("Memomryusage:total:"+totalMemory/1024/1024+"Mb-used:"+usageMemory/1024/1024+"Mb("+Percentage+"%)-free:"+freeMemory/1024/1024+"Mb("+Percentagefree+"%)");在上面的代码中,“totalmemory”和“freememory”是double类型,字节值不为空,所以我将它除以“1024”两次以得到它在“Mb”中,“string”是字
1.StringBuffer和StringBuilder的区别因为字符串不可变,当字符串拼接(尤其是使用+号操作符)时,需要考量性能的问题,不多毫无顾忌的创建太多String对象,从而对内存造成不必要压力。因此Java专门设计StringBuilder类来解决该问题publicfinalclassStringBufferextendsAbstractStringBuilderimplementsSerializable,CharSequence{publicStringBuffer(){super(16);}publicsynchronizedStringBufferappend(String
我在循环语句中有以下代码。在循环中,将字符串附加到sb(StringBuilder)并检查sb的大小是否已达到5MB。if(sb.toString().getBytes("UTF-8").length>=5242880){//Dosomething}这工作正常,但速度很慢(在检查大小方面)最快的方法是什么? 最佳答案 您可以使用以下方法快速计算UTF-8长度publicstaticintutf8Length(CharSequencecs){returncs.codePoints().map(cp->cp如果内容以ASCII字符为主,
这个问题在这里已经有了答案:Howtogeneratearandomalpha-numericstring(46个答案)关闭9年前。我正在使用另一个答案中的StringBuilder,但我只能使用字母/数字、无空格、标点符号等。你能解释一下如何限制这段代码中的字符集吗?另外,如何确保它的长度始终为30个字符?Randomgenerator=newRandom();StringBuilderstringBuilder=newStringBuilder();intLength=30;chartempChar;for(inti=0;i我看过其他大部分答案,但无法找出解决方案。谢谢。如果这是重