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

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

  •  
  •   uCharles Nov 10, 2021 1304 views
    This topic created in 1644 days ago, the information mentioned may be changed or developed.
    System.out.println(str1 == str2);

    true

    今天看了常量池这个东西,感觉都绕晕了
    11 replies    2021-11-11 11:19:37 +08:00
    mercury233
        1
    mercury233  
       Nov 10, 2021
    曾经不看教材直接改过 java 代码,被字符串相等的判断坑了一脸,简直不像高级语言
    orangie
        2
    orangie  
       Nov 10, 2021
    只能说,java 很忠实地告诉你两个指针是相等的……乖乖用 equals
    AoEiuV020
        3
    AoEiuV020  
       Nov 10, 2021
    老面试题了,然而应用层开发压根不该管这个,无脑 equals ,任何时候都不要用==判断字符串相等,
    hidemyself
        4
    hidemyself  
       Nov 10, 2021   1
    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
        5
    uCharles  
    OP
       Nov 10, 2021
    @AoEiuV020 哎,太卷了
    uCharles
        6
    uCharles  
    OP
       Nov 10, 2021
    @hidemyself 本来有点了解了,你这举个例子又迷糊了
    anzu
        7
    anzu  
       Nov 10, 2021
    @hidemyself 有拿这个来当面试题的,目的不在于题目本身,而是测试面试人有没有读过这本书,没看过就答不上来。都卷到这地步了。
    SurfaceView
        8
    SurfaceView  
       Nov 10, 2021
    我没记错的话 1.7 和 1.8 的话这个答案还不一样 这种八股文真是没意思。。。
    kop1989
        9
    kop1989  
       Nov 10, 2021
    类似的还有 Integer == Integer (伪代码)

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

    ==说明两者就是一个对象
    equals 说明两者一模一样,但不是同一个对象,同时这个一模一样的比较标准取决与对象的 hashcode 实现
    About     Help     Advertise     Blog     API     FAQ     Solana     3074 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 48ms UTC 15:03 PVG 23:03 LAX 08:03 JFK 11:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86