java基礎之型別轉換

2021-08-04 05:57:43 字數 1539 閱讀 4844

型別轉換

1)基本型別轉換

a)自動型別轉換--》小型別賦值大型別

b)手動(強制)型別轉換--》大型別賦值給小型別

2)引用型別轉換

a)自動型別轉換--》子型別賦值給超型別

b)手動(強制)型別轉換--》超型別賦值給子型別

* 子型別:繼承鏈下面的型別

* 超型別:繼承鏈上面的型別

* 例如:

*         繼承鏈:中國人-》人-》動物-》生物-》object

*         子型別:假設-》人

*         對應人的超型別:動物-》生物-》object

* a型別  引用變數=b型別的值;

* 引用型別轉換的原則

*         a)編譯看引用型別:編譯時候,如果a型別是b引用型別的超型別--》可以自動型別轉換--》否則編譯錯誤

*         b)執行看物件型別:執行時候,如果a型別是b引用指向物件型別超型別--》可以型別轉換--》否則執行錯誤

* 強轉語法

*         a型別   引用變數=(a型別)b型別的值;

* 怎麼檢查-我們的強制型別轉換-》是否可以成功進行

* instanceof運算子

* 語法:

*   引用   instanceof  目標型別

*   結果值型別:布林值

*   true:引用指向的物件的型別可以轉換為目標型別

*   false:引用指向的物件的型別不可以轉換為目標型別

1、super關鍵字作用?

方便在子類中呼叫【當前物件】的【繼承鏈】上的資源(屬性和方法)

2.this和super的對比

1)都是指向當前物件

2)呼叫資源(成員變數,成員變數)不一樣

this:【當前類】【當前類的父類】【繼承鏈上其他類】

super:【當前類的父類】【繼承鏈上其他類】

3)位置:成員方法,構造器---》靜態的結構不能直接使用

3.super的作用:

1)當成員方法重寫的時候

super.成員方法-》呼叫超型別被重寫的方法

2)當前成員變數同名的時候(不會遇到)

super.成員變數-》呼叫超型別同名的變數

3)呼叫父類指定的構造器-進行資料初始化

建立物件的時候-->做的事情

1)在堆裡建立出乙個物件

2)通過物件呼叫構造器進行資料初始化

3)返回物件位址

--》在有繼承的時候--》建立物件的時候--》呼叫構造器

1)從繼承鏈上到下呼叫每個類的構造器

--》呼叫父類構造器的原因--》進行對應的父類的資料初始化

--》預設空構造器-》沒有資料初始化

2)呼叫父類指定的構造器-進行資料初始化

語法:super(直接父類構造器引數列表);--》在子類構造器呼叫父類指定的匹配引數的構造器

1)必須在構造器中

2)必須在第一句

3)構造器裡如果沒有顯示的super(引數列表)**,那麼預設加上super();編寫了不會加入super();

C 之型別轉換

一 static cast型別轉換 static cast 應用於c 可以隱式轉換的型別之間,包括雙向隱式轉換和單向隱式轉換。例如 雙向隱式轉換 int a char b a static cast b 可以直接通過隱式轉換,轉換型別 a b b static cast a 可以直接通過隱式轉換,轉...

Effective C 之型別轉換

阿里面試過去好久了,可惜筆試做的太爛了,gg,不過還是要繼續完善自己的知識體系的。這個型別轉換的問題,被面試官問到了,然後一臉尼克楊的蒙蔽表情。其實早就找到了,這個問題,一直因為忙別的,沒有好好總結一下。effective c 條款27 儘量減少轉型動作 c 的設計目標之一是,保證 型別錯誤 絕不可...

More Effective C 之型別轉換

1.條款之優先考慮c 風格的型別轉換 c 通過引用4種新的型別轉換克服了c風格的型別轉換的缺點。這四種操作符是 static cast,const cast,dynamic cast以及reinterpret cast。大多數情況下,關於這些操作符應該知道的是,我們所習慣的寫法為 type expr...