String基本特性
不可变性,一旦创建了一个String字符串将不可改变当前对象的内容.
对字符串的修改是,将在内存中重新分配一块空间
String的内存分配
字符串常量在字符串常量表中
通过new 产生一个字符串对象时 将在堆空间new一个String对象
String基本操作
……
字符串拼接操作
在创建一个字符串对象时,底层将会产生两个对象
在堆中的String,和字符串常量表中的. 实现在字符串常量表中创建常量
字符串在拼接时,
# intern() 的理解
判断字符串常量表中是否存在当前常量.
如果有则返回目标地址,如果没有则在常量表中创建一个常量 并返回地址
JDK6 和 JDK7/8… 对intern() 的底层处理有着略微的差异.
JDK6 执行intern是当发现常量表中没有目标常量时.会在常量表中创建一个新的字符串
而在JDK7/8…中会将当前对象的地址存放到常量表中 常量表中和当前对象指向同一个地址 使用== 结果为true