String字符串常量池简介

直接贴代码--->

public class Test {

    public static void main(String[] args) {

        /**
         * 为了提升字符串的访问效率,在程序中使用了"缓存"技术
         * 所以在java中用双引号括起来的字符串都会在常量池中
         * 存储一次,其中字符串常量池在方法区中,在程序的执行
         * 过程中,如果用到了某字符串,会先去字符串常量池中找,
         * 若有,则直接使用,其内存地址也相同.
         */
        String s1 = "abc";
        String s2 = "abc";
        // 以上两个局部变量都存在了常量池中
        System.out.println(s1 == s2);// true
        
        // new出来的对象不会放到常量池中,内存地址是不同的
        String s3 = new String();
        String s4 = new String();
        /**
         * 字符串的比较不可以使用双等号,这样会比较内存地址
         * 字符串比较应当用equals,可见String重写了equals
         */
        System.out.println(s3 == s4);// false
        System.out.println(s3.equals(s4));// true
        
    }

}

秋秋交流群:4060038

原文地址:https://www.cnblogs.com/zhangjianbing/p/8261117.html