这道题目java面试比较多,求大神解答他的输出值。并讲个道理呗

 我来答
victorlbj
2016-11-29 · TA获得超过718个赞
知道小有建树答主
回答量:260
采纳率:0%
帮助的人:169万
展开全部
输出值分别是:
false
true
true

这个“==”号,对于引用型变量来说,不只是要判断变量的值,更主要表示的是两个变量在堆中存储的地址是否相同。
第一,程序一开始在内存中创建了s1=“Programming”的对象,接着又来了个s2=new String("Programming"),注意,s2使用new操作符,所以系统会new一个对象出来,也就是再新建一个对象,所以s1和s2就不会在同一内存地址上。因此为false。记住了,凡是有new的对象,其创建出来的内存地址肯定不一样。
第二,“Program”+“ming”这两字符串相+,结果就是“Programming”,所以就相当于s3=“Programming”,而在创建s3对象时,程序首先会在这个String内存中寻找相同值的对象,也就是找到具有相同值的s1,然后s3引用了s1所引用的对象,也就是说s3与s1指向了同一个存储“Programming”字符串的地址。
第三,看String的intern()方法描述就知道,该方法返回字符串对象的规范化表示形式,也就是返回字符串本身,所以true。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式