String a = "aaa"; 用这种方式的时候java首先在内存中寻找"aaa"字符串,若是有,就把aaa的地址给它 若是没有则建立 String a = new String("aaa"); 是无论内存中有没有"aaa" 都开辟一块新内存保存它 能够用如下方法验证下 String a = "aaa"; String b = "aaa"; String c = new String("aaa"); System.out.println(a==b); System.out.println(a==c); 结果应该是: true false 此题做为java程序员笔试题概率比较高。
用构造器建立的对象,是不会被放入常理池中的,也很明显这彻底是两个对象,只是内容相同罢了,结果固然为false了。用equals()或者System.out.print(a.intern()==b.intern());就返回true了。测试
-- String的Intern方法详解(http://www.cnblogs.com/wxgblogs/p/5635099.html)spa
-- https://zhidao.baidu.com/question/435425677.html.net
详解 JAVA 建立对象 NEWhtm
-- https://my.oschina.net/klog/blog/794910对象
测试代码:blog
public class NewClass {
public static void main(String[] args) {
String a = "aaa";
String b = "aaa";
String c = new String("aaa");
String d = new String("aaa");
System.out.println(a==b); //true
System.out.println(b==c); //false
System.out.println(c==d); //false
}
}
内存