“==”跟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不成立");

 

}

 

}

}

恳求诸位试验试验,小弟只是一小小小菜鸟,才识浅薄,求各路大神指出错误之处!