Java中==與equals深度理解- 寫給java初學者 – JAVA編程語言程序開發技術文章

 對於基本類型的變量,這兩種比較沒有區別,為什麼對於引用類型的變量作比較時就可能
出現不一樣的結果瞭呢?還記得C++中的指針吧?這就有點兒像深拷貝與淺拷貝,其實
Java中對象的引用就是一個指針,隻不過Java語言本身不提供任何直接訪問它的語法。
因為我們使用一個引用類型的變量時,總是在操作這個引用所指向的對象,而不能改變
它本身,即使這個變量去引用另一個對象,即可以理解為“常引用”。
    引用變量中存放的是對象在堆內存中的地址,這個地址稱之為“引用變量的值”,運
   
算符“==”操作兩個引用變量時,就是比較引用變量的值是否相等。所以即使兩個對象的
值完全相同,也是堆中兩塊獨立的區域,當然不相等。而equals此時就會通過它們的值指
向的地址分別得到這兩個對象的值,然後拿兩個值作比較。
    說白瞭,我們假設張三和李四長得很像(幾乎一模一樣,為瞭讓你相信這是真的,我
假設他們是一個媽生的,而且有相同的習慣,長像,愛好,穿著…)
 “==”就是問:張三和李四是不是同一個人?
 “equals”就是問:張三和李四長得一樣嗎?
   路過的初學者們,懂瞭嗎?如果你們還沒懂,怪張三和李四去吧…呵呵
如果真的懂瞭,就感謝張三和李四兩位上知緋文下知歪理的大神瞭,什麼糾纏的事都要找它,嗨!
 
本文出自 “隨機所欲” 博客

發佈留言