Java 中关于String和StringBuffer修改变量的理解
String类型
public class St_Class {
public static void main(String[] args) {
// TODO Auto-generated method stub
String test = "aaa";
test += "bbb";
test = "bbb";
}
}![在这里插入图片描述](https://img-blog.csdnimg.cn/20190805133315942.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JhaWR1XzQxNjE0NDkx,size_16,color_FFFFFF,t_70)
此处实际上在内存中创建了三个不同的字符串,分别位于堆内存的不同地址,所以每一次给test赋值的过程就是让test指向新的内存地址。
所以对于经常要对变量的值进行更改不宜使用String类,这样会浪费内存空间,另外字符串指向的“断开-连接”会降低程序性能。
StringBuffer类型
StringBuffer类型初始化不同于String类型可以直接以“String test = **** ”方式来创建,一般的创建方式如下:
public class St_Class {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuffer test = new StringBuffer("aaa");
test.append("bbb"); // outcome:aaabbb;
}
}
StringBuffer的变量修改是在同一个内存处修改变量的值,所以不会新开辟内存空间,有利于程序的性能。