最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java深入講解instanceof關(guān)鍵字的使用

 更新時(shí)間:2022年05月30日 08:38:53   作者:小老師ir  
instanceof 是 Java 的一個(gè)二元操作符,類似于 ==,>,< 等操作符。instanceof 是 Java 的保留關(guān)鍵字。它的作用是測(cè)試它左邊的對(duì)象是否是它右邊的類的實(shí)例,返回 boolean 的數(shù)據(jù)類型

instanceof關(guān)鍵字的使用

1. 語(yǔ)法格式

x instanceof A:檢驗(yàn)x是否為類A的對(duì)象,返回值為boolean類型,如果是,返回true;如果不是,返回false。

? 要求x所屬的類與類A必須是子類和父類的關(guān)系,否則編譯錯(cuò)誤

? 如果x屬于類A的子類B,x instanceof A值也為true

public class Person extends Object {…}
public class Student extends Person {…}
public class Graduate extends Person {…}
-------------------------------------------------------------------
public void method1(Person e) {
   if (e instanceof Person) {// 處理Person類及其子類對(duì)象}   
   if (e instanceof Student) {//處理Student類及其子類對(duì)象}
   if (e instanceof Graduate){//處理Graduate類及其子類對(duì)象}
}

2. 類型轉(zhuǎn)換 (Casting)

2.1 基本數(shù)據(jù)類型的Casting

? 自動(dòng)類型轉(zhuǎn)換:小的數(shù)據(jù)類型可以自動(dòng)轉(zhuǎn)換成大的數(shù)據(jù)類型。

如:long g=20; double d=12.0f;

? 強(qiáng)制類型轉(zhuǎn)換:可以把大的數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換(casting)成小的數(shù)據(jù)類型。

如:float f=(float)12.0; int a=(int)1200L;

2.2 對(duì)象類型轉(zhuǎn)換

? 為了避免在向下轉(zhuǎn)型時(shí)出現(xiàn)ClassCastException的異常,我們?cè)谙蛳罗D(zhuǎn)型之前,先進(jìn)行instanceof的判斷,一旦返回true,就進(jìn)行向下轉(zhuǎn)型。如果返回false,不進(jìn)行向下轉(zhuǎn)型。

? 從子類到父類的類型轉(zhuǎn)換可以自動(dòng)進(jìn)行 。

? 從父類到子類的類型轉(zhuǎn)換必須通過(guò)造型(強(qiáng)制類型轉(zhuǎn)換)實(shí)現(xiàn) 。

? 無(wú)繼承關(guān)系的引用類型間的轉(zhuǎn)換是非法的。

? 如果 a instanceof A返回true,則 a instanceof B也返回true, 其中,類B是類A的父類。

2.3 代碼演示

public class ConversionTest {
   public static void main(String[] args) {
     double d = 13.4;
     long l = (long) d;
     System.out.println(l);//13
     int in = 5;
     // boolean b = (boolean)in;
     Object obj = "Hello";
     String objStr = (String) obj;
     System.out.println(objStr);//Hello
     Object objPri = new Integer(5);
     // 所以下面代碼運(yùn)行時(shí)引發(fā)ClassCastException異常
    String str = (String) objPri; 
    /*
    Exception in thread "main" java.lang.ClassCastException:          
    java.lang.Integer cannot be cast to java.lang.String
    */
    } 
}

3. 錯(cuò)誤舉例

class Person {
	String name;
	int age;	
	int id = 1001;	
	public void eat(){
		System.out.println("人:吃飯");
	}	
	public void walk(){
		System.out.println("人:走路");
	}	
}
class Man extends Person{	
	boolean isSmoking;	
	int id = 1002;	
	public void earnMoney(){
		System.out.println("男人負(fù)責(zé)掙錢養(yǎng)家");
	}	
	public void eat(){
		System.out.println("男人多吃肉,長(zhǎng)肌肉");
	}	
	public void walk(){
		System.out.println("男人霸氣的走路");
	}
}
class Woman extends Person{	
	boolean isBeauty;	
	public void goShopping(){
		System.out.println("女人喜歡購(gòu)物");
	}	
	public void eat(){
		System.out.println("女人少吃,為了減肥");
	}	
	public void walk(){
		System.out.println("女人窈窕的走路");
	}
}
public class PersonTest {
	public static void main(String[] args) {
//問(wèn)題一:編譯時(shí)通過(guò),運(yùn)行時(shí)不通過(guò)
		//舉例一:
//		Person p3 = new Woman();
//		Man m3 = (Man)p3;
		//舉例二:
//		Person p4 = new Person();
//		Man m4 = (Man)p4;
		//問(wèn)題二:編譯通過(guò),運(yùn)行時(shí)也通過(guò)
//		Object obj = new Woman();
//		Person p = (Person)obj;
		//問(wèn)題三:編譯不通過(guò)
//		Man m5 = new Woman();		
//		String str = new Date();		
//		Object o = new Date();
//		String str1 = (String)o;
	}
}

到此這篇關(guān)于Java深入講解instanceof關(guān)鍵字的使用的文章就介紹到這了,更多相關(guān)Java instanceof內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 源碼分析Spring?中?@Qualifier?注解基本用法

    源碼分析Spring?中?@Qualifier?注解基本用法

    這篇文章主要介紹了源碼分析Spring?中?@Qualifier?注解基本用法,在源碼分析的過(guò)程中,也?GET?到?Spring?許多新的玩法,感興趣的小伙伴趕緊去試試吧
    2023-08-08
  • Netty客戶端接入流程N(yùn)ioSocketChannel創(chuàng)建解析

    Netty客戶端接入流程N(yùn)ioSocketChannel創(chuàng)建解析

    這篇文章主要為大家介紹了Netty客戶端接入流程N(yùn)ioSocketChannel創(chuàng)建源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • RabbitMQ?Stream插件使用案例代碼

    RabbitMQ?Stream插件使用案例代碼

    這篇文章主要介紹了RabbitMQ?Stream插件使用案例代碼,2.4版為RabbitMQ流插件引入了對(duì)RabbitMQStream插件Java客戶端的初始支持,需要的朋友可以參考下
    2024-04-04
  • java構(gòu)造方法的互相調(diào)用方式

    java構(gòu)造方法的互相調(diào)用方式

    這篇文章主要介紹了java構(gòu)造方法的互相調(diào)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Spring?Data?JPA框架的Repository自定義實(shí)現(xiàn)詳解

    Spring?Data?JPA框架的Repository自定義實(shí)現(xiàn)詳解

    Spring?Data?JPA是Spring基于JPA規(guī)范的基礎(chǔ)上封裝的?套?JPA?應(yīng)?框架,可使開(kāi)發(fā)者?極簡(jiǎn)的代碼即可實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)和操作,本篇我們來(lái)了解Spring?Data?JPA框架的Repository自定義實(shí)現(xiàn)
    2022-04-04
  • Java基于中介者模式實(shí)現(xiàn)多人聊天室功能示例

    Java基于中介者模式實(shí)現(xiàn)多人聊天室功能示例

    這篇文章主要介紹了Java基于中介者模式實(shí)現(xiàn)多人聊天室功能,詳細(xì)分析了中介者模式的概念、原理以及使用中介模式實(shí)現(xiàn)多人聊天的步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下
    2018-05-05
  • 基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng)

    基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了基于springboot+vue實(shí)現(xiàn)垃圾分類管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能(最新推薦)

    SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能(最新推薦)

    這篇文章主要介紹了SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能,本文通過(guò)示例代碼給大家介紹非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • Java獲取網(wǎng)頁(yè)數(shù)據(jù)步驟方法詳解

    Java獲取網(wǎng)頁(yè)數(shù)據(jù)步驟方法詳解

    這篇文章主要介紹了Java獲取網(wǎng)頁(yè)數(shù)據(jù)步驟方法詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • 使用Idea連接MySQL的詳細(xì)步驟總結(jié)

    使用Idea連接MySQL的詳細(xì)步驟總結(jié)

    今天給大家?guī)?lái)的是關(guān)于IDEA連接數(shù)據(jù)庫(kù)的問(wèn)題,文章圍繞著使用Idea連接MySQL的詳細(xì)步驟展開(kāi),文中有非常詳細(xì)的介紹及圖文示例,需要的朋友可以參考下
    2021-06-06

最新評(píng)論

抚远县| 军事| 黔东| 贵溪市| 阳山县| 开江县| 西贡区| 锡林郭勒盟| 红安县| 临桂县| 三穗县| 囊谦县| 延川县| 广西| 宁蒗| 岚皋县| 霍城县| 伽师县| 眉山市| 高密市| 景德镇市| 松滋市| 无锡市| 西青区| 潞西市| 广东省| 阿拉善左旗| 乌拉特前旗| 玉树县| 广饶县| 高淳县| 施秉县| 高青县| 米脂县| 长宁区| 若尔盖县| 辰溪县| 克什克腾旗| 准格尔旗| 于田县| 内乡县|