==对比的是栈中的值,基本数据类型比的是变量的值,引用类型是堆中内存对象的地址
比如比较两个int值 就会比较两个值是否相等 而比较String时就会比较两个值的地址(因为他是引用类型值)
equals:object中默认也是采用==比较,通常会重写
Object
public boolean equals(Object obj){
return(this==obj)
}
比如String里面就 已经帮我们重写了equals方法
String str1='hello'在常量池中分配内存
String str2=new String('hello')在堆中分配地址
str1==str2返回就是false 因为对比的是栈中的值 所以比较的是地址值
String str3=str2 这里赋给str3的就是str2的地址值
而equals已经重写了 对比的就是字符 所以都是true