20200828-齐元朝

问题

已经通过代码证明过的问题/

对于String类中的intern方法

个人理解就是这个方法的目的就是确保该字符串实例在字符串常量池中

以前的版本(好像是java9以前的)中,是判断此字符串在不在字符串常量池,不在就在常量池里创建一个一模一样的;

但是在现在的版本中,如果字符串常量池中没有,不会在字符串池中新建实例,而是会把已经存在堆里的实例的地址复制到池中

此时如果再声明一个相同的String实例 比如String t=“ ”;

那么会将池中的地址返回传给新声明的变量中

问题就是 返回的地址是池中存储的堆中实例的地址,上课时老师已经敲过代码,用 == 比较 两个变量中存储的值是相等的 , 但我觉得应该返回池中 存储 堆中实例地址 的地址(存储地址的地址)

可能有其它原因导致这样的值传递,但以我目前浅薄的认识,我觉得怪怪的,应该返回的是存储地址的地址啊?

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1