`
yzzh9
  • 浏览: 18581 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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 Stringconcat(String str)

 

将指定字符串联到此字符串的结尾。

 

如果参数字符串的长度为 0,则返回此 String 对象。否则,创建一个新的 String 对象,用来表示由此 String 对象表示的字符序列和由参数字符串表示的字符序列串联而成的字符序列。

 

对了,区别就在于 String 的调用 concat 方法会新建立一个 String 对象,而 StringBuilder append 方法返回的还是原来对象的应用。




 

public class TestValue { 
  publicstaticvoid main(String[] args) { 
    String string = new String("Hello"); 
    modify(string); 
    System.out.println(string); 
  } 
  publicstaticvoid modify(String s) { 
    s += "world!";//这里通过"+"操作创建了一个新对象让s指向它。但string的引用并没有变。 
    s = s.concat("winwin");//这里的concat方法重新创建了一个String对象,所以string的引用没有变,只是s的引用变了。 
  } 
} 
 
public class TestValue { 
  publicstaticvoid main(String[] args) { 
    StringBuilder string = new StringBuilder("Hello"); 
    modify(string); 
    System.out.println(string); 
  } 
  publicstaticvoid modify(StringBuilder s) { 
    s.append(",world!");//由于StringBuilder类有方法可以改变,所以就能够改变string的值。 
  } 
} 
  
 
 
此篇文章为我自己写的笔记,既然是笔记,顺便再写一点与题目无关的内容:

 

String str = winwin

 

String str = new String( winwin )

 

的区别:

 

字符串直接赋值时, String 类型的变量所引用的值是存储在类的常量池中的。这种情况下,变量的内存空间大小是在编译期就已经确定的。

 

new 对象的方式是将 winwin 存储到 String 对象的内存空间中,而这个存储动作是在运行期进行的。
分享到:
评论

相关推荐

    String StringBuffer和StringBuilder区别之源码解析

    "String StringBuffer和StringBuilder区别之源码解析" 在Java中,字符串是我们经常使用的数据类型,而String、StringBuffer和StringBuilder是Java中三种常用的字符串类。在这篇文章中,我们将从源码角度对String、...

    String和StringBuilder类的区别

    ### String和StringBuilder类的区别 在.NET框架中,`String` 和 `StringBuilder` 是两种非常重要的字符串处理类。尽管它们都能用来表示和操作文本数据,但它们之间存在显著的区别,主要体现在内存使用、性能表现...

    String、StringBuilder和StringBuffer的区别

    在Java编程语言中,String、StringBuilder和StringBuffer都是用来处理字符串的类,它们之间存在一些重要的区别,主要涉及到性能和线程安全性。 首先,`String`类代表的是字符串常量,一旦创建,其内容就不能改变。...

    String和StringBuilder效率测试

    在Java编程语言中,`String`和`StringBuilder`都是用于处理字符串的重要类,但它们在处理方式和效率上有显著的区别。本资源中的代码是针对这两种类的效率进行测试的实例,旨在帮助开发者理解它们在不同场景下的性能...

    String及StringBuffer和StringBuilder的区别

    String、StringBuffer 和 StringBuilder 是 Java 语言中三种不同类型的字符串处理方式,它们之间存在着明显的性能和线程安全性差异。 String String 类型是不可变的对象,每次对 String 对象进行改变时都会生成一...

    String、StringBuffer、StringBuilder的使用方法

    在Java编程语言中,`String`、`...理解`String`、`StringBuffer`和`StringBuilder`的区别和使用场合,可以帮助开发者写出更高效、更安全的代码。在实际开发中,应根据项目需求和环境选择合适的字符串处理类。

    String、StringBuffer与StringBuilder之间区别

    String:字符串常量  StringBuffer:字符创... StringBuilder:字符创变量  从上面的名字可以看到,String是“字符创常量”,也就是不可改变的对象。对于这句话的理解你可能会产生这样一个疑问 ,比如这段代码:

    String、StringBuilder、StringBuffer 用法比较

    stringbuilder用法 String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String、StringBuilder、StringBuffer 用法比较String...

    Java-Java String和StringBuilder

    在Java编程语言中,String和StringBuilder是两个非常重要的类,它们在处理文本字符串时起着核心作用。了解这两个类的特点和使用场景对于提高程序性能至关重要。 首先,`String`类在Java中是不可变的,这意味着一旦...

    String、StringBuilder、StringBuffer的区别

    在 Java 中,String、StringBuilder 和 StringBuffer 三者都是字符串处理类,但是它们之间存在着本质的区别。本文将从执行速度、线程安全性、字符串处理方式等方面对这三者进行比较和分析。 首先,从执行速度方面来...

    C#中String和StringBuilder的简介与区别

    C#中String和StringBuilder的简介与区别 String类型对象的特点: 1.它是引用类型,在堆上分配内存 2.运算时会产生一个新的实例 3.String 对象一旦生成不可改变(Immutable) 4.定义相等运算符(== 和 !=)是为了...

    跟我学Java-day13-String和StringBuilder.pdf

    day13-String和StringBuilder 1.String类 1.1字符串的比较【理解】 1.1.1==号的作用 比较基本数据类型:比较的是具体的值 比较引用数据类型:比较的是对象地址值 1.1.2equals方法的作用 方法介绍 示例代码 ...

    String和StringBuilder、StringBuffer的区别1

    在Java编程语言中,`String`、`StringBuilder`和`StringBuffer`是处理字符串的三种主要类型,它们各自具有不同的特性和使用场景。下面将详细解释它们之间的主要区别。 首先,`String`类是最基本的字符串类型,它...

    测试string的+和String.Format()和StringBuilder.Append()性能差距|TestForString.7z

    在循环或大量拼接场景下,`StringBuilder.Append()`方法的性能显著优于`+`和`String.Format()`。这是因为`StringBuilder`在内存中维护一个缓冲区,直到最后才一次性生成字符串,减少了不必要的内存分配和垃圾回收。 ...

    字符串、String类和StringBuilder类

    “”、“null”和“string.Empty”的区别是经常被问到的问题。“”代表空字符串,它是一个长度为0的字符串,但并非空引用;null则是引用类型的默认值,表示没有任何对象引用;而string.Empty是一个长度为0的字符串...

    C#string和stringbuilder的比较及计时器的实现

    在C#编程语言中,`string`和`StringBuilder`是两个常见的字符串处理类,它们各自有不同的特性和适用场景。在处理大量字符串操作时,理解它们的区别对于优化代码性能至关重要。本篇文章将深入探讨这两个类,并通过一...

    String ,StringBuffer与StringBuilder

    在 Java 中,String, StringBuffer 和 StringBuilder 三个类都是用于字符操作的,但它们之间有着很大的区别。 首先,String 是不可变类,意味着一旦创建了 String 对象,就不能修改它的值。每次对 String 对象的...

    String、StringBuilder以及StringBuffer的区别

    String、StringBuilder以及StringBuffer的区别

    Tedu一段String和StringBuilder

    根据给定文件的信息,我们可以提炼出以下几个核心知识点: ### 1. Java中的访问控制修饰符 - **Public**: 表示公开,任何类都...通过这种方式,我们可以更深入地理解 `String` 和 `StringBuilder` 的使用场景和区别。

Global site tag (gtag.js) - Google Analytics