首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  Java

老生常谈的 Java 面试题 字符相等

  •  
  •   huiyue · 2017-03-24 13:56:08 +08:00 · 2153 次点击
    这是一个创建于 996 天前的主题,其中的信息可能已经有所发展或是发生改变。
    String a="abc";
    String b="abc";
    System.out.println(a==b);
    10 回复  |  直到 2017-03-30 17:01:30 +08:00
        1
    Troevil   2017-03-24 13:58:14 +08:00
    String a="abc";
    String b="abc";
    System.out.println(a==b);
    String c=new String("abc");
    System.out.println(b==c);
        2
    misaka19000   2017-03-24 14:19:12 +08:00 via Android
    我想起来 r 大的那篇文章了
        3
    murmur   2017-03-24 14:20:04 +08:00   ♥ 1
    所以最简单的不就是把用=判断相等的打死不就完了
        4
    Chrisplus   2017-03-24 14:33:58 +08:00
    '''
    In computer science, string interning is a method of storing only one copy of each distinct string value, which must be immutable. Interning strings makes some string processing tasks more time- or space-efficient at the cost of requiring more time when the string is created or interned. The distinct values are stored in a string intern pool.
    '''
        5
    shalk   2017-03-25 13:08:53 +08:00
    == 用于基本类型的比较,对象会直接比较引用
    对象建议用 equals 比较,但需要实现这个方法。

    String 作为对象也按照这个规则,但是它有一个 String Pool 的概念( http://stackoverflow.com/questions/3052442/what-is-the-difference-between-text-and-new-stringtext
        7
    cwek   2017-03-28 15:44:50 +08:00
    String 是对象,==对于对象判断引用一致。
    字面 String 常量,还要包括编译器常量折叠后的,通过常量池实现引用一致,通过运行期 new 出来的都在堆中,肯定引用不一致。
    intern()方法在 java 版本有不同
    运行期 String.intern()会查找 String 缓存池有没相同内容的,有则返回相同引用。
    但:
    1.6 及之前,没则复制一份到 String 常量池,并返回引用,引用对象相同。
    1.7 及之后,没则复制一个堆引用到 String 常量池并返回,实际返回的还是堆引用,与常量引用不同。
        8
    huiyue   2017-03-28 20:29:04 +08:00
    @Troevil @misaka19000 @cwek @shalk @Chrisplus @murmur @cs4814751 回复一下。这是公司的一道面试题。但面试里面 5 年以下工作经验的,答对的不多。
        9
    misaka19000   2017-03-28 20:50:33 +08:00 via Android
    @huiyue 只能说你们公司技术太烂,面试的都是些什么人
        10
    huiyue   2017-03-30 17:01:30 +08:00
    @misaka19000 很有道理。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1408 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 24ms · UTC 16:58 · PVG 00:58 · LAX 08:58 · JFK 11:58
    ♥ Do have faith in what you're doing.