[ Java ] String str1 = new String("悟空") + new String("八戒"); String str2 = str1.intern();

2021-11-10 14:39:25 +08:00
 uCharles
System.out.println(str1 == str2);

true

今天看了常量池这个东西,感觉都绕晕了
813 次点击
所在节点    问与答
11 条回复
mercury233
2021-11-10 14:51:33 +08:00
曾经不看教材直接改过 java 代码,被字符串相等的判断坑了一脸,简直不像高级语言
orangie
2021-11-10 14:58:59 +08:00
只能说,java 很忠实地告诉你两个指针是相等的……乖乖用 equals😑
AoEiuV020
2021-11-10 15:02:42 +08:00
老面试题了,然而应用层开发压根不该管这个,无脑 equals ,任何时候都不要用==判断字符串相等,
hidemyself
2021-11-10 15:03:42 +08:00
String str1 = new String("ja") + new String("va");             
String str2 = str1.intern();             
System.out.println(str1==str2);        
试下这个

贴一个 R 大的回答        
如何理解《深入理解 java 虚拟机》第二版中对 String.intern()方法的讲解中所举的例子? - RednaxelaFX 的回答 - 知乎
https://www.zhihu.com/question/51102308/answer/124441115
uCharles
2021-11-10 15:16:19 +08:00
@AoEiuV020 哎,太卷了
uCharles
2021-11-10 15:16:42 +08:00
@hidemyself 本来有点了解了,你这举个例子又迷糊了
anzu
2021-11-10 15:30:02 +08:00
@hidemyself 有拿这个来当面试题的,目的不在于题目本身,而是测试面试人有没有读过这本书,没看过就答不上来。都卷到这地步了。
SurfaceView
2021-11-10 15:35:02 +08:00
我没记错的话 1.7 和 1.8 的话这个答案还不一样 这种八股文真是没意思。。。
kop1989
2021-11-10 15:39:31 +08:00
类似的还有 Integer == Integer (伪代码)

虽然我本人不面试后端的应聘者,但能回答正确这个问题,在我本人的心目中肯定是不加分的。
只能证明他 /她真的认真背过题,所以我接下来和他 /她的交流我要小心验证其工作经历,以及其技术掌握度的真实性。
hidemyself
2021-11-10 15:43:48 +08:00
@anzu
@kop1989
额,这个我还真会。。
大环境就是这样,面试动辄底层源码实现,各种偏题怪题,有什么办法?
我面的大多数都会问 GC 调优,但是在我有限的职业经历中,需要开发者去 GC 调优的情况基本没有,只能背
更不用说
LLaMA2
2021-11-11 11:19:37 +08:00
一对双胞胎 Alice 和 Bob,简直一模一样,判断相等的时候能用==吗?不能,应为他们不是同一个人啊。用 equals 就可以。
Alice 有个外号叫 Alex ,现在问你 Alex 和 Alice 相等吗,是的,是==的。

==说明两者就是一个对象
equals 说明两者一模一样,但不是同一个对象,同时这个一模一样的比较标准取决与对象的 hashcode 实现

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/814409

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX