java中instanceof 關(guān)鍵字作用和實(shí)際用途詳解
instanceof
1. instanceof 是Java中的一個(gè)關(guān)鍵字,Java中的關(guān)鍵子都是小寫(xiě)。
2. instanceof關(guān)鍵字的作用是判斷左邊對(duì)象是否是右邊類(lèi)(這里有很多人說(shuō)是對(duì)象,所以注意這里是類(lèi),并不是對(duì)象)的實(shí)例(通俗易懂的說(shuō)就是:子類(lèi)對(duì)象,或者右邊類(lèi)本身的對(duì)象)返回的boolean類(lèi)型,true和false。
舉個(gè)例子:
public class Dome{
class Perse extends Object{}
class Student extends Perse{}
//這個(gè)方法判斷是否是Perse的實(shí)例,用instanceof判斷。
void f(Object o){//Object可以接收任何的類(lèi)型。
if(o instanceof Perse)
System.out.println("你輸入的對(duì)象是Perse的實(shí)例");
else
System.out.println("你輸入的對(duì)象不是Perse的實(shí)例");
public static void main(String[] args){
Dome dome =new Doem();
Perse perse =new Perse();
Student student =new Student();
Object object = new Object();
dome.f(/*shutdent或者perse以及object*/);
//結(jié)果:
//輸入的是student和perse那么instanceof 判斷就會(huì)是true,if也就執(zhí)行打印語(yǔ)句System.out.println("你輸入的對(duì)象是Perse的實(shí)例");
//那么輸入object自然instanceof判斷就是false。
原因我們開(kāi)頭已經(jīng)說(shuō)的很清楚啦。
//instanceof關(guān)鍵字的作用是判斷左邊對(duì)象是否是右邊對(duì)象的實(shí)例(通俗易懂的說(shuō)就是:子類(lèi),或者右邊類(lèi)本身的對(duì)象)
}
}
使用環(huán)境
public class CastingDemo{
public static void displayObject(Object o){
if(o instanceof Yuan){//判斷是否為圓的對(duì)象,不是則往下執(zhí)行判斷else if
System.out.println("圓的面積為:" + ((Yuan)o).mianJi);//這里(Yuan)Object)防止參數(shù)o是Yuan的子類(lèi),此方法獲得面積。
System.out.println("圓的直徑為:" + ((Yuan)o).zhiJing);//此方法獲得直徑。
}else if(o instanceof ChangFangXing){
System.out.println("長(zhǎng)方形的面積為:" + ((ChangFangXing)o));
}
}
public static void main(String[ ] args){
Object yuan =new Yuan(/*半徑:*/ 1 );//Yuan是圓的對(duì)象,參數(shù)是半徑,的出圓的面積和直徑。詳細(xì)類(lèi)就不寫(xiě)啦,理解就行。
Object changFangXing =new ChangFangXing(/*長(zhǎng)寬:*/ 1,1);//ChangFangXing是長(zhǎng)方形,參數(shù)是長(zhǎng)和寬,的出面積
//因?yàn)槭庆o態(tài)方法并且在本類(lèi)直接使用,省略 類(lèi)名.
displayObject(yuan);
displayObject(changFangXing);
}
}
結(jié)果:圓的面積為:3.1415926
圓的直徑為:2.0
長(zhǎng)方形的面積為:1.0
這個(gè)樣子的使用instanceof增加了代碼的靈活性,如果你有更好的例子可以分享出來(lái)一起參考。
到此這篇關(guān)于java中instanceof 關(guān)鍵字作用和實(shí)際用途的文章就介紹到這了,更多相關(guān)java instanceof 關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java 反射和動(dòng)態(tài)代理詳解及實(shí)例代碼
這篇文章主要介紹了java 反射和動(dòng)態(tài)代理詳解及實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2016-09-09
java并發(fā)編程中實(shí)現(xiàn)可見(jiàn)性的四種可行方案解析
這篇文章主要介紹了java并發(fā)編程中實(shí)現(xiàn)可見(jiàn)性的四種可行方案解析,使用關(guān)鍵字volatile和使用鎖(如synchronized關(guān)鍵字或者java.util.concurrent包中的鎖)來(lái)確保對(duì)共享變量的修改在多線程環(huán)境中能夠正確地被其他線程所觀察到,需要的朋友可以參考下2023-08-08
SpringBoot?配置多個(gè)JdbcTemplate的實(shí)現(xiàn)步驟
本文介紹了在SpringBoot中配置多個(gè)JdbcTemplate的方法,包括創(chuàng)建項(xiàng)目、添加依賴(lài)、配置數(shù)據(jù)源和多個(gè)JdbcTemplate的使用,感興趣的可以了解一下2024-11-11
springboot快速搭建ftpserver服務(wù)端的詳細(xì)步驟
基于springboot,使用ftpserver快速搭建一個(gè)FTP服務(wù)端,搭建過(guò)程很簡(jiǎn)單,我們把過(guò)程分成4個(gè)步驟,一分鐘內(nèi)快速完成構(gòu)建,感興趣的朋友跟隨小編一起看看吧2023-11-11
springboot項(xiàng)目中application.properties無(wú)法變成小樹(shù)葉問(wèn)題解決方案
這篇文章主要介紹了springboot項(xiàng)目中application.properties無(wú)法變成小樹(shù)葉問(wèn)題解決,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09
詳解java中this.getClass()和super.getClass()的實(shí)例
這篇文章主要介紹了詳解java中this.getClass()和super.getClass()的實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-08-08
如何實(shí)現(xiàn)Java監(jiān)聽(tīng)器詳解
今天帶大家了解Java監(jiān)聽(tīng)器是如何實(shí)現(xiàn)的及實(shí)現(xiàn)原理是什么,文中有非常詳細(xì)的說(shuō)明,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下2021-06-06
Java實(shí)現(xiàn)世界上最快的排序算法Timsort的示例代碼
Timsort?是一個(gè)混合、穩(wěn)定的排序算法,簡(jiǎn)單來(lái)說(shuō)就是歸并排序和二分插入排序算法的混合體,號(hào)稱(chēng)世界上最好的排序算法。本文將詳解Timsort算法是定義與實(shí)現(xiàn),需要的可以參考一下2022-07-07
微信開(kāi)發(fā)--自定義菜單查詢(xún)返碼亂碼的解決方法
本篇文章主要介紹了微信開(kāi)發(fā)--自定義菜單查詢(xún)返碼亂碼的解決方法,具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03

