String和StringBuilder区别

简介:
string “+” 操作就是根据 StringBuilder (或  StringBuffer )类及其  append  方法实现的。
String 不可变其实就是说一个 String 对象创建之后不能再在这个对象上做其他操作(如追加,删除一个字符),只能通过创建别的 String 对象来获取这个效果,而 StringBuilder 就可以在一个 StringBuilder 对象上进行改变:
String  str =  hello
str = str+ world // 这时并不是在原来的 hello ”对象 上追加 world ,而是重新创建了一个 hello world ”对象
 
String  不能被修改,事实上很简单。就是因为  String  没有提供写操作方法,没有提供能够修改 String 对象的成员变量的方法。而 StringBuilder 则提供了这样的方法( append ()等方法)。
也许有人会说 String 不是有个 concat 方法可以在字符串后面追加字符串吗?呵呵,我们看过 API 的解释就知道是怎么回事了:
Concat
public String concat(String str)
将指定字符串联到此字符串的结尾。
如果参数字符串的长度为 0,则返回此 String 对象。否则,创建一个新的 String 对象,用来表示由此 String 对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序列。
对了,区别就在于 String 的调用 concat 方法会新建立一个 String 对象,而 StringBuilder append 方法返回的还是原来对象的应用。
public class TestValue { 
  public static void main(String[] args) { 
    String string = new String("Hello"); 
    modify(string); 
    System.out.println(string); 
  } 
  public static void modify(String s) { 
    s += "world!";//这里通过"+"操作创建了一个新对象让s指向它。但string的引用并没有变。 
    s = s.concat("winwin");//这里的concat方法重新创建了一个String对象,所以string的引用没有变,只是s的引用变了。 
  } 

 
 
public class TestValue { 
  public static void main(String[] args) { 
    StringBuilder string = new StringBuilder("Hello"); 
    modify(string); 
    System.out.println(string); 
  } 
  public static void modify(StringBuilder s) { 
    s.append(",world!");//由于StringBuilder类有方法可以改变,所以就能够改变string的值。 
  } 

 
 
此篇文章为我自己写的笔记,既然是笔记,顺便再写一点与题目无关的内容:
String str = winwin
String str = new String(winwin)
的区别:
字符串直接赋值时,String类型的变量所引用的值是存储在类的常量池中的。这种情况下,变量的内存空间大小是在编译期就已经确定的。
new对象的方式是将 winwin存储到String对象的内存空间中,而这个存储动作是在运行期进行的。









本文转自 yzzh9 51CTO博客,原文链接:http://blog.51cto.com/java999/162739,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
存储 安全 Java
String StringBuffer StringBuilder 区别详解与对比分析
本文详细解析了Java中String、StringBuffer和StringBuilder的区别,从可变性、线程安全性和性能三个方面进行对比,并结合具体应用场景分析了三者的适用范围。通过性能测试示例展示了它们在字符串拼接时的效率差异,同时提供了实际代码案例帮助理解。总结指出,String适合少量操作或线程安全场景,StringBuffer适用于多线程环境,而StringBuilder则在单线程下性能最优。开发者应根据需求选择合适的类以优化程序性能。文末还附有相关面试资料供参考。
1053 2
|
存储 安全 Java
String、StringBuffer 和 StringBuilder 的区别
【10月更文挑战第21天】String、StringBuffer 和 StringBuilder 都有各自的特点和适用场景。了解它们之间的区别,可以帮助我们在编程中更合理地选择和使用这些类,从而提高程序的性能和质量。还可以结合具体的代码示例和实际应用场景,进一步深入分析它们的性能差异和使用技巧,使对它们的理解更加全面和深入。
544 57
String、StringBuffer、StringBuilder的区别
String 由 char[] 数组构成,使用了 final 修饰,对 String 进行改变时每次都会新生成一个 String 对象,然后把指针指向新的引用对象。 StringBuffer可变并且线程安全;有一定缓冲区容量,字符串大小没超过容量,不会重新分配新的容量,适合多线程操作字符串; StringBuiler可变并且线程不安全。速度比StringBuffer更快,适合单线程操作字符串。 操作少量字符数据用 String;单线程操作大量数据用 StringBuilder;多线程操作大量数据用 StringBuffer
String、StringBuffer、StringBuilder的区别
这篇文章讨论了Java中String、StringBuffer和StringBuilder的区别。String是不可变的,每次操作都会产生新的对象,效率低且浪费内存。StringBuilder可以在原字符串基础上进行操作,不开辟额外内存,弥补了String的缺陷。StringBuffer和StringBuilder类似,但StringBuffer的方法是线程安全的。文章还列举了StringBuffer的常用方法,并提供了使用示例代码。最后总结了这三者的主要区别。
String、StringBuffer、StringBuilder的区别
|
canal 安全 索引
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
(StringBuffer和StringBuilder)以及回文串,字符串经典习题
140 5
|
安全 Java
Java StringBuffer 和 StringBuilder 类详解
在 Java 中,`StringBuffer` 和 `StringBuilder` 用于操作可变字符串,支持拼接、插入、删除等功能。两者的主要区别在于线程安全性和性能:`StringBuffer` 线程安全但较慢,适用于多线程环境;`StringBuilder` 非线程安全但更快,适合单线程环境。选择合适的类取决于具体的应用场景和性能需求。通常,在不需要线程安全的情况下,推荐使用 `StringBuilder` 以获得更好的性能。
221 8
|
API C# 开发者
WPF图形绘制大师指南:GDI+与Direct2D完美融合,带你玩转高性能图形处理秘籍!
【8月更文挑战第31天】GDI+与Direct2D的结合为WPF图形绘制提供了强大的工具集。通过合理地使用这两种技术,开发者可以创造出性能优异且视觉效果丰富的WPF应用程序。在实际应用中,开发者应根据项目需求和技术背景,权衡利弊,选择最合适的技术方案。
974 1
|
2月前
|
编解码 Java 开发者
Java String类的关键方法总结
以上总结了Java `String` 类最常见和重要功能性方法。每种操作都对应着日常编程任务,并且理解每种操作如何影响及处理 `Strings` 对于任何使用 Java 的开发者来说都至关重要。
289 5