equals与==的区别
对于基本数据类型
- 基本数据类型的变量储存在栈内存中
- 变量名指向其对应的数值
- ==比较的是数值是否相等
对于引用类型
- new出来的对象储存在堆内存中
- 变量名指向堆中的首地址
- ==比较的是地址,equals比较的是数值
public static void main(String[] args) {
int a = 10;
int b = 10;
System.out.println(a==b);
String str1 = new String("abc"); //true
String str2 = new String("abc");
System.out.println(str1.equals(str2)); //true
System.out.println(str1 == str2); //false
}
还有一种情况是
String str3 = "abc";
String str4 = "abc";
System.out.println(str3 == str4); //true
System.out.println(str3.equals(str4)); //true
这里的"abc"不是new出来的,而是直接储存在常量池中
所以str3和str4指向的是常量池中同一个"abc"常量
常量池属于方法区
8万+

被折叠的 条评论
为什么被折叠?



