java 中的instanceof 運算符是用來在運行時指出對象是否是特定類的一個實例。instanceof通過返回一個布爾值來指出,這個對象是否是這個特定類或者是它的子類的一個實例。
用法:
result = object instanceof class
參數(shù):
result:布爾類型。
object:必選項。任意對象表達式。
class:必選項。任意已定義的對象類。
說明:
如果 object 是 class 的一個實例,則 instanceof 運算符返回 true。如果 object 不是指定類的一個實例,或者 object 是 null,則返回 false。
但是instanceof在java的編譯狀態(tài)和運行狀態(tài)是有區(qū)別的:
在編譯狀態(tài)中,class可以是object對象的父類,自身類,子類。在這三種情況下java編譯時不會報錯。
在運行轉(zhuǎn)態(tài)中,class可以是object對象的父類,自身類,不能是子類。在前兩種情況下result的結(jié)果為true,最后一種為false。但是class為子類時編譯不會報錯。運行結(jié)果為false。
例子:
接口person
1
2
3
|
public interface person { public void eat(); } |
實現(xiàn)類people
1
2
3
4
5
6
7
|
public class people implements person { private int a= 0 ; @override public void eat() { system.out.println( "======" +a); } } |
子類xiaoming:
1
2
3
4
5
6
7
|
public class xiaoming extends people { private string name; @override public void eat() { system.out.println( "+++++++++" ); } } |
主函數(shù)
1
2
3
4
5
6
7
8
|
public static void main(string[] args) { people p= new people(); xiaoming x= new xiaoming(); system.out.println(p instanceof person); system.out.println(p instanceof xiaoming); ----- 2 system.out.println(x instanceof person); system.out.println(x instanceof people); } |
注意:上面2處的代碼在編譯時不會報錯。
運行結(jié)果:
true
false
true
true
總結(jié)
以上所述是小編給大家介紹的java中instanceof關(guān)鍵字的理解,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對服務(wù)器之家網(wǎng)站的支持!
原文鏈接:https://blog.csdn.net/Dingwensheng1222/article/details/82965258