Java中==與equals深度理解 - 寫給java初學者

      對於基本類型的變量,這兩種比較沒有區別,爲什麼對於引用類型的變量作比較時就可能

出現不一樣的結果了呢?還記得C++中的指針吧?這就有點兒像深拷貝與淺拷貝,其實

Java中對象的引用就是一個指針,只不過Java語言本身不提供任何直接訪問它的語法。

因爲我們使用一個引用類型的變量時,總是在操作這個引用所指向的對象,而不能改變

它本身,即使這個變量去引用另一個對象,即可以理解爲“常引用”。

    引用變量中存放的是對象在堆內存中的地址,這個地址稱之爲“引用變量的值”,運
   
算符“==”操作兩個引用變量時,就是比較引用變量的值是否相等。所以即使兩個對象的

值完全相同,也是堆中兩塊獨立的區域,當然不相等。而equals此時就會通過它們的值指

向的地址分別得到這兩個對象的值,然後拿兩個值作比較。

    說白了,我們假設張三和李四長得很像(幾乎一模一樣,爲了讓你相信這是真的,我

假設他們是一個媽生的,而且有相同的習慣,長像,愛好,穿着...)

 “==”就是問:張三和李四是不是同一個人?
 “equals”就是問:張三和李四長得一樣嗎?

   路過的初學者們,懂了嗎?如果你們還沒懂,怪張三和李四去吧...呵呵

如果真的懂了,就感謝張三和李四兩位上知緋文下知歪理的大神了,什麼糾纏的事都要找它,嗨!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章