提到String大家想到都是字符串不可变 和他的两种创建对象方式,
今天再帮大家回顾一下:
1.创建方式
String s1 ="abc";
String s2 =new String("abc");
2存储原理:
涉及到的内存包括 栈 堆 字符串常量池
栈-------------------------堆------------------------常量池
s1<---------------------------------------------------"abc"
(0x123) (0x123)
s2<---------------------new String()---------------"abc"
(0x456) (0x456)
(0x123) (0x123)
再常量池中”abc“只有一份物理地址为0x123,指向不同的引用,这也是为了方便程序员开发,
3字符串不可变
字符串不可变,String底层是一个char[] 数组 数组一旦初始化长度 长度就不可变了
其次 该属性被final修饰,,导致数组中的元素不可更改,,所以说字符串不可变,
但字符串可以共享 参考存储原理。
字符串拼接 底层是创建了新的字符串对象,并没有修改原数组
点赞收藏关注投币