目录
- String字符串在内存里是如何存储的?
- String.intern()方法
- String字符串是如何引发内存泄漏的?
- 总结
今天给大家聊聊咱们平时写代码的时候,最常见的String字符串代码,它的一些底层原理,以及使用不当可能引发的内存泄漏的问题,相信对于大家平时日常开发写代码会有一定的帮助。
String字符串在内存里是如何存储的?
首先呢,当我们平时在代码中写下一行String类型的代码时,大家知道这个String字符串在内存里是如何存储的吗?比如这样的一行代码:String username = “zhangsan”,这个"zhangsan"其实就是一串字符串,实际上它在底层是用一个数组来存放的,而且这个数组大小就严格等于这个字符串的长度,它是不可变的,如下图。
![](https://i-blog.csdnimg.cn/blog_migrate/2ae8f81f9779c5e0f1ccd090928fb9fb.webp?x-image-process=image/format,png)
接着呢,对于Java中的字符串来说,有一个常量池的概念,意思就是说,对于相同的字符串内容,它往往会在内存里用同一个数组来表示,而不会对相同的字符串内容创建出不同的数组来存放,比如说下面两行代码,大家看看:
String username = "zhangsan";
String nickname = "zhangsan";
上面的username和nickname它们两个字符串指向的内容都是"zhangsan"&