Java getClass() VS instanceof VS ==
Java getClass() VS instanceof VS ==
含義
- getClass() 返回調(diào)用對(duì)象object的運(yùn)行時(shí)類(lèi)(runtime class),一個(gè)Class實(shí)例。
- a instanceof T 返回a是否是T類(lèi)型的實(shí)例或者T類(lèi)型的子類(lèi)型的實(shí)例
- a == b 判斷a和b引用的是否是同一個(gè)對(duì)象
區(qū)分
getClass()的文檔介紹如下:
Returns the runtime class of this Object.
The returned Class object is the object that is locked by static synchronized methods of the represented class.
The returned Class object is the object that is locked by static synchronized methods of the represented class
這句話的意思是在說(shuō)明一個(gè)事實(shí):
T.class = a.getClass()
返回的Class對(duì)象是該對(duì)象(Class對(duì)象)表示的類(lèi)中的靜態(tài)同步方法鎖住的那個(gè)對(duì)象。
java中當(dāng)同步關(guān)鍵字加在靜態(tài)方法前面,當(dāng)某個(gè)線程進(jìn)入該方法時(shí),必須是已經(jīng)獲得了該類(lèi)對(duì)象(T.class)的鎖。
下面兩個(gè)寫(xiě)法效果相同:
- 1
- 2
另外,java中的同步關(guān)鍵字的加鎖粒度一般發(fā)生在普通對(duì)象和類(lèi)對(duì)象上,封鎖范圍一般可以是代碼塊、一個(gè)方法、整個(gè)類(lèi)的所有方法等。
instanceof是一個(gè)操作符,返回值是false或true。
instanceof不僅可以判斷對(duì)象是否是某個(gè)類(lèi)T或其子類(lèi)的實(shí)例,還可以判斷是否是某個(gè)接口I或其子接口I的實(shí)現(xiàn)類(lèi)的實(shí)例。
==操作符是判斷兩個(gè)引用對(duì)應(yīng)的對(duì)象是否是同一個(gè)。
equal()方法是自定義的判斷的兩個(gè)引用對(duì)應(yīng)的對(duì)象是否邏輯相等。
轉(zhuǎn)載于:https://www.cnblogs.com/Spground/p/8536147.html
總結(jié)
以上是生活随笔為你收集整理的Java getClass() VS instanceof VS ==的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java的String构造对象的几种方法
- 下一篇: tyvj1305 最大子序和 【单调队