• String和.intern()


    final 和 String

    public static void main(String[] args) {
            String a1 = "a";
            String a2 = "b";
            // 非final串相加,指向堆中new的对象
            String a3 = a1+a2;
            String a4 = "ab";
            String a5 = new String("ab");
            System.out.println("a3==a4?"+(a3==a4));//false
            System.out.println("a3==a5?"+(a3==a5));//false
            System.out.println("a4==a5?"+(a4==a5));//false
    
            // final串相加,直接指向常量池中存在的
            final String a6 = "a";
            final String a7 = "b";
            String a8 = a6+a7;
            System.out.println("a3==a8?"+(a3==a8));//false
            System.out.println("a4==a8?"+(a4==a8));//true
            System.out.println("a5==a8?"+(a5==a8));//false
    
        }

    intern方法

    s3.intern()在 Stirng s4 = "11"之前

    public static void main(String[] args) {
            String s3 = new String("1") + new String("1");
            s3.intern();
            String s4 = "11";
    
            System.out.println(s3 == s4);// s3.intern()在 s4创建之前 true
        }

    s3.intern()在 Stirng s4 = "11"之后

    public static void main(String[] args) {
            String s3 = new String("1") + new String("1");
            String s4 = "11";
            s3.intern();
    
            System.out.println(s3 == s4);// s3.intern()在 s4创建之后 false
        }

    直接new String("11") 也返回false

    public static void main(String[] args) {
            String s3 = new String("11");
            s3.intern();
            String s4 = "11";
    
            System.out.println(s3 == s4);// false
        }

    猜想:s3 = new String("1")+ new String("1");时常量池中不存在"11"

    所以调用s3.intern()使得,s3指向了常量池。

    如果s3 = new String("11")那么常量池中会创建一个"11"则,调用s3.intern()不起作用s3还是指向new String("11")。

    或者s3 = new String("1")+ new String("1");s4 = "11"则,常量池中还是有"11"所以数s3.intern()不起作用

  • 相关阅读:
    Ubuntu Linux markdown编辑工具 typora 安装
    ref以及传值传址的理解
    3. 无重复字符的最长子串
    30. 串联所有单词的子串 (哈希+滑动窗口)
    525. 连续数组 (哈希表)
    438. 找到字符串中所有字母异位词 (滑动窗口)
    451、根据字符出现频率排序(哈希 加优先队列)
    743. 网络延迟时间
    310. 最小高度树
    8皇后问题
  • 原文地址:https://www.cnblogs.com/wsZzz1997/p/14692889.html
Copyright © 2020-2023  润新知