JAVA里面 String a = "aaa"; 和 String a = new String("aaa");有什么区别?
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);结果应该是:truefalse此题作为java程序员笔试题几率比较高。
--
--
--
用构造器创建的对象,是不会被放入常理池中的,也很明显这完全是两个对象,只是内容相同罢了,结果当然为false了。用equals()或者System.out.print(a.intern()==b.intern());就返回true了。
-- ()
Java中内存分为几块
--
详解 JAVA 创建对象 NEW
--
测试代码:
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 } }