本文介绍了String类对字符串进行拼接的方法和拼接字符串的效率分析以及能对字符串内容进行修改的StringBuilder和StringBuffer类其常用方法和区别,最后介绍了两个字符串经典面试题StringBuilder和StringBuffer的学习一.String类概括二.StringBuilder和StringBuffer1.字符串拼接2.StringBuilder和StringBuffer常用方法和区别3.面试题:以下代码共创建多少个对象?4.面试题:String、StringBuilder和StringBuffer的异同三.总结一.String类概括1.String常用方法学习-
我正在阅读“Better,Faster,LighterJava”(作者BruceTate和JustinGehtland)并且熟悉敏捷类型团队的可读性要求,例如RobertMartin在他的干净的编码书籍。在我现在所在的团队中,我被明确告知不要使用+运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。但是这个article,写回'04谈论对象分配是如何大约10条机器指令。(基本上免费)它还谈到了GC如何在这种环境中帮助降低成本。使用+、StringBuilder或StringBuffer之间的实际性能权衡是什么?(在我的例子中,它是StringBuffer,因为我们仅限于Java
我正在阅读“Better,Faster,LighterJava”(作者BruceTate和JustinGehtland)并且熟悉敏捷类型团队的可读性要求,例如RobertMartin在他的干净的编码书籍。在我现在所在的团队中,我被明确告知不要使用+运算符,因为它会在运行时创建额外的(和不必要的)字符串对象。但是这个article,写回'04谈论对象分配是如何大约10条机器指令。(基本上免费)它还谈到了GC如何在这种环境中帮助降低成本。使用+、StringBuilder或StringBuffer之间的实际性能权衡是什么?(在我的例子中,它是StringBuffer,因为我们仅限于Java
Java中String和StringBuffer有什么区别?字符串有最大大小吗? 最佳答案 String用于操作无法更改(只读和不可变)的字符串。StringBuffer用于表示可以修改的字符。性能方面,StringBuffer在执行连接时更快。这是因为当你连接一个String时,你每次都在(内部)创建一个新对象,因为String是不可变的。您也可以使用StringBuilder,它类似于StringBuffer,只是它不同步。其中任何一个的最大大小为Integer.MAX_VALUE(231-1=2,147,483,647)或最大
Java中String和StringBuffer有什么区别?字符串有最大大小吗? 最佳答案 String用于操作无法更改(只读和不可变)的字符串。StringBuffer用于表示可以修改的字符。性能方面,StringBuffer在执行连接时更快。这是因为当你连接一个String时,你每次都在(内部)创建一个新对象,因为String是不可变的。您也可以使用StringBuilder,它类似于StringBuffer,只是它不同步。其中任何一个的最大大小为Integer.MAX_VALUE(231-1=2,147,483,647)或最大
字符串是不可变的,这意味着它们一旦创建就无法更改。那么,这是否意味着如果使用+=追加内容比创建StringBuffer并向其追加文本会占用更多内存?如果你使用+=,你会在每次必须保存在内存中的时候创建一个新的“对象”,不是吗? 最佳答案 是的,每次使用+=都会创建一个新对象。然而,这并不意味着这样做总是错误的。这取决于您是希望该值作为字符串,还是只是使用它来进一步构建字符串。如果您确实想要x+y的结果作为字符串,那么您最好使用字符串连接。但是,如果您真的要(比如说)循环并附加另一个字符串,以及另一个字符串等等-只需要在最后作为字符串
在很多情况下,我们需要删除StringBuilder/StringBuffer的最后一个字符。例如,给定一个int[]{1,2,3},实现一个StringtoString(int[]a)方法,用逗号分隔符连接每个元素.输出应为1,2,3,没有尾部逗号。我们可以很容易地写一个循环:int[]nums=newint[]{1,2,3,4,5};StringBuildersb=newStringBuilder();for(inti=0;i但我们总是需要删除尾部','。有两种实现方式:sb.deleteCharAt(sb.length()-1);和sb.setLength(sb.length()
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:String,StringBuffer,andStringBuilder我们知道String是不可变的,而StringBuffer/StringBuilder是可变的。但有时我们对在我们的代码中使用什么感到困惑..String或StringBuffer/StringBuilder??实际上,在我们的最大代码/快速代码中,我们更喜欢String而不是StringBuffer/StringBuilder。这个问题是为了解决困惑,如果你有什么想法和适当的理由,请给予答复。
人们经常争论避免创建对象(尤其是在循环中)被认为是好的做法。那么,对于StringBuffer,什么是最高效的呢?StringBuffersb=newStringBuffer();ObjectInputStreamois=...;for(inti=0;i我的意思是,有人可能会争辩说创建对象比循环数组更快。 最佳答案 首先StringBuffer是线程安全的,与StringBuilder相比性能较差。StringBuilder不是线程安全的,但因此速度更快。最后,我更喜欢使用setLength将长度设置为0.sb.setLength(
我们如何重新分配StringBuffer或StringBuilder变量的值?StringBuffersb=newStringBuffer("teststr");现在我必须在不清空内容的情况下将sb的值更改为“testString”。我正在寻找一种可以直接进行此分配而不使用单独的内存分配的方法。我认为我们只能在清空内容后才能进行。 最佳答案 sb.setLength(0);sb.append("testString"); 关于java-如何重新分配StringBuffer的值?,我们在S