常量池

作者: 大红豆小薏米 | 来源:发表于2020-04-26 00:26 被阅读0次

    在compile的时候,放东西进常量池。

    对于Integer 范围在 -128 - 127

    Integer a = 5;
    Integer b = 5;
    a == b   // true, 因为真的是一个地址
    
    Integer a = new Integer(5);
    Integer b = new Integer(5);
    a == b   // false
    
    Integer a = 128;
    Integer b = 128;
    a == b   // false
    

    对于 String, 编译器在编译的时候放进了常量池

    String s1 = "qwertyyy"; // 此时放进了常量池
    String s2 = "qwertyyy";  // 指向了常量池那个"qwertyyy"
    s1 == s2; //true 
    
    String s1 = "qwertyyy";
    String s2 = new String("qwertyyy"); // 在heap 上new 了一个
    s1 == s2; // false
    
    // 例子
    String sa = "a";
    String sb = "b";
    String sab = "a"+"b";
    
    sab == "a"+"b";  true
    sab == sa + "b";  false // 编译器不会这么聪明往回看sa是什么
    sab == sa + sb;   false
    

    相关文章

      网友评论

          本文标题:常量池

          本文链接:https://www.haomeiwen.com/subject/dorrwhtx.html