如下代码,输出结果是true还是false?
public static void main(String[] args) {
String a="abcdef";
String b=new String("abcdef");
System.out.println(a==b);
}
答案:false
解析:
1、引用对象==符号来判断内存地址是不是相同。注意区分String的equals方法。
2、String a="abcdef",这段代码创建了一个a引用,指向"abcdef"字符串,如果常量池中没有"abcdef"字符串,则创建。
重点:String b=new String("abcdef"),b是通过new关键字创建的,对象一定会在堆中强制生成一个新的。
故a和b是两个不同的对象。
如果是代码:String b="abcdef"的话,就会在常量池中查找有没有该字符串,并且发现有,就是同一个,返回true。