一、String类对象内容不可改变
也就是说String类型的字符串的内容--旦声明赋值之后是不可以改变的
DEMO:观察代码
发现了最后输出的内容是“helloworld!”这与之前的描述不同,其实这里改变的不是原来的字符串的内容,改变的是引用。+
通过上面的DEMO发现了最初声明的“hello”并没有改变,改变的是引用。还发现了生成许多没有栈内存指向的对象,这样的对象将会等待GC回收!
也说明如果一个String类字符串改变频率较高则会产生大量的垃圾,这样造成内存的耗费从而降低了性能。
所以如果字符串频率改变高的时候我们不使用String类来实现字符串的创建,而是使用“StringBuffer” 或者“StringBuilder”类来创建字符串(但是这两个类我们放到常用类库部分去讲解)
DEMO:观察代码(使用String声明的字符串)
不断的触发GC,说明产生了大量的垃圾对象。
DEMO:观察代码(使用StrinBuilder声明的字符串)
发现了使用StringBuilder 的时候没有触发GC,说明没有产生垃圾对象。
总结:
1、String 类的字符串对象不可以改变
2、如果一个字符串改变频率太高则会产生大量的垃圾,所以此时我们不使用String类来实现字符串的创建。