引用變數的強制型別轉換 instanceof

2021-08-09 07:47:46 字數 1208 閱讀 2419

引用變數只能呼叫它編譯時的型別方法,而不能呼叫它執行時型別的方法。

強制型別轉換:

1.基本型別之間的轉換只能在數值型別之間進行。數值型別與布林型別不能轉換。

2.引用型別之間的轉換只能在具有繼承關係的兩個型別之間進行,如果試圖把乙個父類例項轉換為乙個子類型別,則這個物件必須實際上是子類型別(即編譯時時父類型別,而執行時為子類型別),否則會classcastexception。

//型別轉換

double d=13.12;

long l=(long)d;

system.out.println(l);

//編譯時會提示不可轉換型別

//boolean b=(boolen) d;

object b="hello";

string bi=(string) b;

system.out.println(bi);

object c=new integer(5);

integer co=(integer)c;

system.out.println(co);

string ci=(string)c;

最後一行強制型別轉換會出錯。因為c不是string型別,不能轉化為string型別。

當子類物件賦給父類引用便量是,成為向上轉型。這種型別轉換總是成功的,這也證實,子類是一種特殊的父類。

但把乙個父親物件賦給子類引用變數時,就需要進行強制型別轉換,而且可能產生classcastexception異常,使用instanceof運算子可以讓強制轉換型別更安全。

instanceof運算子的前乙個運算元是乙個引用型別變數,後乙個運算元是通常是乙個類。它用於判斷前面的物件是否是    後面的類,或者其子類、實現類的例項。是則返回true,否返回false

system.out.println("是否是objece類"+(b instanceof object));//true

system.out.println("是否是string類"+(b instanceof string));//true

system.out.println("是否是integer類"+(b instanceof integer));//false

system.out.println("是否是comparable介面"+(b instanceof comparable));//true

引用型別強制轉換

多型表現在兩個方面 1.乙個父型別的引用在指向不同的物件時會有不同的實現 如 iunionpay atm atm new atmabc atm new atmcbc 總結,執行時,方法執行看物件!2.乙個子型別物件,向上造型 成不同的父型別時,可以使用的功能不一樣 向上造型 指子類型別的變數,可以自...

Python變數型別的強制轉換

當我們需要對資料的型別轉換時,只需要將資料型別作為函式名即可。下面給出的函式可以執行資料型別之間的轉換,函式返回乙個新的物件,表示轉換的值 函式格式 使用示例 描述int x base int 8 可以轉換的包括string型別和其他數字型別,但是會丟失精度 float x float 1 或者fl...

多型 引用型別的強制型別轉換 final關鍵字

一 多型 多型性是oop中的乙個重要特性,主要是用來實現動態聯編的,換句話說,就是程式的最終狀態只有在執行過程中才被決定而非在編譯期間就決定了。這對於大型系統來說能提高系統的靈活性和擴充套件性 programmer p1 new chinese 建立子類物件 賦值給其父類的引用變數 呼叫方法 如果方...