==和equals()

257 阅读1分钟

区别: ==比较的是两个实例或变量指向的内存地址是否相同,而equals()比较的是比较对象所指向的内存地址的值是否相同。

String a=new String("1"); //先在常量池存放1,在复制到堆中,a指向堆中的1
String b=new String("1");//检查得常量池中已经存在1,直接去堆中复制一个1.b指向堆中的这个1
String aa="2";//直接在常量池中建立2
String bb="2";//bb也指向常量池中的2

System.out.println(a==b); //false 
System.out.println(a.equals(b)); //true
System.out.println(aa==bb); //true