“==”跟equals的区别(最透切的领悟)
“==”和equals的区别(最透切的领悟)
今日看到一篇文章,讲述“==”和equals的区别,接近上万字,十一页的word。仔细研究一番,最终得到自己的见解:
直接创建数据类型的比如int a=3 ;String b=“fuck”之类的数据存储在栈里,而new过的对象存储在堆里,在栈里的只是一个指向堆对象的一个指针,也叫地址;而==和equals的区别在于,==比较的是在栈里的值,equals比较的是对象里的内容。
public class test_equals {
public static void main(String args[]) {
String a1 = new String("1");
String a2 = new String("1");
String a3 = "2";
String a4 = "2";
if (a1 == a2) {
System.out.println("a1==a2成立");
} else {
System.out
.println("a1和a2都是new出来的新对象,其内容存储在堆中,此时用==比较的是栈中地址,明显不会相等");
}
if (a3 == a4) {
System.out.println("没经过new,即数据只是暂存在栈中,==是比较栈中数据,因此必必然相等");
} else {
System.out.println("a3==a4不成立");
}
}
}
恳求诸位试验试验,小弟只是一小小小菜鸟,才识浅薄,求各路大神指出错误之处!