1、"aa".equals("aa") 返回 true 。因为 String类重写了Object对象的equals
2、
String a1=new String("aa"); String a2=new String("aa");
System.out.println(a1==a2) 返回false
String a1="aa"; String a2="aa";
System.out.println(a1==a2) 返回true
"==" 都是地址比较,为什么 第二个a1==a2 就返回true。
原因是:"aa" 这样赋的值存在stack栈中,stack会先搜索栈区如果没有一样的值再新生产一个值。
而new String 出来的对象存在heap堆中,没new一次就是一个新对象。