请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

1.6版本intern方法不懂

图片描述
在JDK1.6的时候为什么当s.intern的时候,s2在常量池中已经生成了,所以副本放不进去了。
但是s3.intern的时候,s4在常量池中却还没有生成??
s2=“a”;
s4=“aa”;

正在回答 回答被采纳积分+3

插入代码

1回答

翔仔 2020-04-07 23:44:52

同学好,对于s2来讲,开头就出现了new String("a")   "a" 这个常量本身就放到了常量池里了,而对于s4来讲,第一行new String("a") 里并没有"aa"

0 回复 有任何疑惑可以回复我~
  • 提问者 油腻! #1
    对于s4来讲,前面不是有一个new String("a")+new String("a")了吗。这样的String类型的字符串拼接不是会创建一个新的字符串吗,难道没有创建"aa",并intern到常量池中吗?
    回复 有任何疑惑可以回复我~ 2020-04-11 10:57:36
  • 翔仔 回复 提问者 油腻! #2
    不是这样的,new String("a")+new String("a") 虽然能生成"aa" 但是程序在解析方法里面用到的常量的时候,并不会解析到"aa" 也就是方法在执行之前,载入常量池的只有"a"
    回复 有任何疑惑可以回复我~ 2020-04-12 02:27:48
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号