String是不可变的字符串序列。因为底层是final修饰的字符数组, 所以定义后就变成了常量, String s = "abc", 如果是这样定义, "abc" 是放在方法区中的常量池, 新建了一个对象. String s = new String("abc"); 创建了两个对象, 一个常量池, 一个堆内存.
StringBuffer是一个类似于 String 的字符串缓冲区,但不能修改(这里指的是不能和字符串一样通过+连接修改)。虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。 存储在堆内存
|