直接贴代码--->
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