彻底搞懂String:字符串常量池( 二 )


彻底搞懂String:字符串常量池

文章插图
补充:字面量和常量池初探
字符串对象内部是用字符数组存储的,那么看下面的例子:
彻底搞懂String:字符串常量池

文章插图
1、会分配一个11长度的char数组,并在常量池分配一个由这个char数组组成的字符串,然后由m去引用这个字符串 。
2、用n去引用常量池里边的字符串,所以和n引用的是同一个对象 。
3、生成一个新的字符串,但内部的字符数组引用着m内部的字符数组 。
4、同样会生成一个新的字符串,但内部的字符数组引用常量池里边的字符串内部的字符数组,意思是和u是同样的字符数组 。
使用图来表示的话,情况就大概是这样的(使用虚线只是表示两者其实没什么特别的关系):
彻底搞懂String:字符串常量池

文章插图
测试demo:
彻底搞懂String:字符串常量池

文章插图
结论:
1、m和n是同一个对象;
2、m,u,v都是不同的对象;
3、m,u,v,n但都使用了同样的字符数组,并且用equal判断的话也会返回true 。

【彻底搞懂String:字符串常量池】


推荐阅读