本文目錄一覽:
JAVA如何進行強制類型轉換?
如果這2種類型是兼容的,那麼Java 將自動地進行轉換。
如果這2種類型是兼容的,那麼Java 將自動地進行轉換。例如,把int 類型的值賦給long類型的變數,總是可行的。
然而,不是所有的類型都是兼容的。因此,不是所有的類型轉換都是可以隱式實現的。例如,沒有將double 型轉換為byte 型的定義。
幸好,獲得不兼容的類型之間的轉換仍然是可能的。要達到這個目的,你必須使用一個強制類型轉換,它能完成兩個不兼容的類型之間的顯式變換。讓我們看看自動類型轉換和強制類型轉換。
java 強制類型轉換的規則是什麼?
1、執行算術運算時,低類型(短位元組)可以轉換為高類型(長位元組);例如:int型轉換成double型,char型轉換成int型等等;
2、賦值表達式中,等號右邊表達式的值的類型自動隱式地轉換為左邊變數的類型,並賦值給它;
3、函數調用時,將實參的值傳遞給形參,系統首先會自動隱式地把實參的值的類型轉換為形參的類型,然後再賦值給形參;
4、函數有返回值時,系統首先會自動隱式地將返回表達式的值的類型轉換為函數的返回類型,然後再賦值給調用函數返回。
擴展資料
C++中強制類型轉換函數有4個:
1、const_cast(用於去除const屬性)。
2、static_cast(用於基本類型的強制轉換)。
3、dynamic_cast(用於多態類型之間的類型轉換)。
4、reinterpreter_cast(用於不同類型之間的指針之間的轉換,最常用的就是不同類型之間函數指針的轉換)。
隱式類型轉換髮生在賦值表達式和有返回值的函數調用表達式中。
在賦值表達式中,如果賦值符左右兩側的操作數類型不同,則將賦值符右邊操作數強制轉換為賦值符左側的類型數值後,賦值給賦值符左側的變數。
在函數調用時,如果return後面表達式的類型與函數返回值類型不同,則在返回值時將return後面表達式的數值強制轉換為函數返回值類型後,再將值返回。
參考資料
百度百科-強制類型轉換
Java強制數據類型轉換
規則可不少,挺亂的其實:
強制數據類型轉換: int nowC = (int)c;
還可以這樣,使用intValue方法,返回一個int值:
Double d = 5 / 9.0 * (f – 32);
int nowC = d.intValue();
Double類是基本數據類型double所對應的包裝類。
基本數據類型轉換的規則:
Java中基本數據類型共有8種,其中boolean類型不能轉換為其它類型,其它類型也不能轉換為boolean型
除了boolean類型,還有7種,按照它們的容量(也就是表數範圍,就是能表示的數的大小範圍,比如char是0——65535)的大小,從小到大,排序依次為:
byte short char int long float double
1.容量小的向容量大的轉換,可以自動轉換,比如可以直接將一個int類型賦值給double:
double d = 34;
2.容量大的向容量小的轉換,必須強制類型轉換,就是你上面的那種形式,比如:
double c = 5/9.0 *(f – 32);
int nowC = (int)c;
3.整數類型常量默認為int類型,比如17
4.浮點類型常量默認為double類型,比如3.14
5.在多種數據類型混合運算時,容量小的自動轉換為整個表達式中容量最大的,然後再進行計算,比如:
int i = 9; float f = 4f; double d = 3.14; double dd = i+f+d;
此時,i和f都各自先轉換成double,在進行+運算。
6.在多種數據類型混合運算時,byte short char 3者不會互相轉換,他們各自轉換為int再進行計算
7.在有些時候,容量小的會自動提升為容量大的,比如方法重載傳參數時候,
但是byte 和 short 不會自動提升為char,其它類型按照我上面所述的順序提升。
差不多就這些,不明白補充,另外需要注意的是強轉雖然編譯沒問題,但是運行時,有可能會數據溢出,損失精度
JAVA如何進行強制類型轉換
轉型有兩種: 向上轉型和向下轉型(強制轉型)
兩種分別如下:
一種是向上轉型
對於基礎數據類型 , 可以自動轉型 ,比如:
int a = 10;
long b = a;
這裡就是把int型轉成了long型 , 因為 long範圍比int大 , 這樣的轉型不會有任何影響 , 所以可以自動轉型
又比如 A a = new B();
其中 A 是B 的父類 , 這也是多態 , 就是父類的對象指向子類的引用 , 你調用a對象 , 實際上是B的類 , 但是B繼承A , 擁有A的一切屬性和方法 (不談複寫)
第二種是向下轉型 , 也就是強制
這種需要強轉 , 比如
long a = 10 ;
int b = (int) a;
通過 (int)可以強制轉型 , 但是這樣會丟失精度 , 比如a如果超過了b的範圍 , 那麼強轉成int型, 只會等於int的最大值
又比如 :
B b = new A(); 這樣是不行的 , 需要有中間途徑 , 比如
A a = new A(); Object obj = a; B b = (A) a;
而這種強轉 , 又有要求 , 必須是同類型 , 也就是說 A 就是B , 不然會報錯.
不同類型之間如果要轉型 , 需要通過中間途徑 , 比如JSON , 將A轉成JSON串 , 然後再轉換為B
原創文章,作者:BDLUF,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/318171.html