希望能有人解答一下这个问题
这样输出是true
按理说这里应该是true,这里为什么为false是因为程序在编译期时就已经加载来java这个字符串到常量池中了(在System类中的Version.init
中有一个常量就是launcher_name定义的就是java)。
在jdk7环境后,正常加载是ja,va进入常量池,StringBuilder链接字符串后加入到了java堆中当str2调用intern方法后,会先去常量池中查看是否有java字符串常量。
有,那返回常量池中的地址;
没有,那就会将java堆中的对象地址引入常量池中,再将这个引用地址返回。
所以正常情况下应该是true。而判断java是因为程序运行编译期已经加载所以就导致一个是地址不一样。