• 小知识:关于String的创建


    下面程序的输出结果,参考代码中的注释,原因也在其中。

    public class MyDemo {
        public static void main(String[] args) {
            String s1 = "Programming";
            String s2 = new String("Programming");
            String s3 = "Program";
            String s4 = "ming";
            String s5 = "Program" + "ming";
            String s6 = s3 + s4;
            System.out.println(s1 == s2);  // false 因为一个在常量池中,一个在堆内存中 
            System.out.println(s1 == s5);  //  true 因为都在常量池中
            System.out.println(s1 == s6);  // false 字符串的+操作其本质是创建了StringBuilder对象进行append操作,即s6在堆内存中
            System.out.println(s1 == s6.intern()); // true 因为intern方法会得到字符串对象在常量池中对应的版本的引用
            System.out.println(s2 == s2.intern()); // false 因为s2本身在堆内存中
        }
    }

     关于StringBuilder、StringBuffer与String的差别就不多讲了。

  • 相关阅读:
    K
    A
    C
    E
    2020/9/14
    hdu5306 hdu3954 cf438D
    2020/9/10-9/11
    题解
    2020/8/31
    2020/8/30
  • 原文地址:https://www.cnblogs.com/nayitian/p/14979822.html
Copyright © 2020-2023  润新知