问答详情
源自:2-5 认识 Java 中的 StringBuilder 类

String和StringBuilder的区别

代码实现:

public class HelloWorld {

    public static void main(String[] args) {

        

       // 创建一个StringBuilder对象,用来存储字符串

StringBuilder hobby=new StringBuilder("爱慕课");

System.out.println(hobby);

System.out.println(hobby+"team");

System.out.println(hobby);

}

}

运行结果:

爱慕课

爱慕课team

爱慕课

这个和String的运行结果一样,怎么理解“不可变性”?


提问者:qq_睫毛下挂满幸福的诺言丶_0 2018-01-25 15:12

个回答

  • 司马梵音
    2018-08-22 16:49:40

    1. hobby+"team" 和 hobby = hobby+"team"不一样。前者是新的内存地址,放了这个值,后者新的值,放了值,但是。。。'hobby='又将地址指向原来的地址。和问题不是同一个问题

    2. StringBuilder的内存不变:生成一个StringBuilder,对此数据的更改,比如拼接操作 hobby = hobby+"team",就1.所说的还是原来的地址。只是这个地址的值变了。而String做拼接操作时,会生成新的内存地址。拼接的值也是在新的内存地址上。StringBuilder的不变是指其内存地址,因此有些情况下,如果平凡调用同一个参数用来拼接,使用StringBuilder的效率比较高

  • 如果我是DJ我是DJ我是DJ我是DJ
    2018-05-18 19:24:09

    指向的值不一样

    当你hhh ="fasfa"; 的时候  值已经从hhhdas指向了fasfa   hhhdas不变,多了一个fasfa  hhhdas没人使用

    但如果用StringBuffer或者StringBuilder的话会把hhdas修改成fasfa吧

  • 有梦想的男孩___
    2018-01-25 15:48:38

    string创建一个对象的值不能改变,stringBuilder创建一个对象之后可以进行修改,不会再创建另一个变量