Java运行期数据存放
内存存放:
堆:存放new(对象)
栈:局部变量。
数据段:类变量(静态变量)、常量
代码段:方法的定义
使用生命周期来进行分类存放。
.equals对比的是内容。String重写了equals方法。
==对比的是地址。
String c= new String("abc")
c变量指向堆中的字符串对象,但是产生堆中的字符串对象之前,会先在常量区中,产生字符串常量对象。
然后以常量对象为模板,拷入堆中的字符串对象。
字符串具有长度不可变化的特性。当对字符串进行添加、替换、删除时,不会改变字符串的内容,而是产生一个新字符串。
StringBuffer是缓冲区的对象,当对StringBuffer做添加、替换、删除时,直接改变StringBuffer的内容,不会产生新对象。
如果需要对字符串做频繁操作时,一般先转化为StringBuffer。操作完成以后,再通过调用toString()转化为字符串。