String和StringBuilder的区别

来源:2-5 认识 Java 中的 StringBuilder 类

qq_睫毛下挂满幸福的诺言丶_0

2018-01-25 15:12

代码实现:

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的运行结果一样,怎么理解“不可变性”?


写回答 关注

3回答

  • 司马梵音
    2018-08-22 16:49:40
    1. hobby+"team" 和 hobby = hobby+"team"不一样。前者是新的内存地址,放了这个值,后者新的值,放了值,但是。。。'hobby='又将地址指向原来的地址。和问题不是同一个问题

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

    qq_Tak...

    HelloWorld.java:8: error: incompatible types: String cannot be converted to StringBuilder hobby = hobby+"team";

    2018-12-24 17:41:35

    共 1 条回复 >

  • 如果我是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创建一个对象之后可以进行修改,不会再创建另一个变量

    司马梵音 回复守林鸟

    stringBuilder创建后的修改,实在原来的地方修改。不会生成新的内存地址

    2018-08-22 16:54:04

    共 4 条回复 >

Java入门第三季

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

409792 学习 · 4340 问题

查看课程

相似问题