本文目錄一覽:
Java中的強制類型轉換是如何轉換的?
java中數據類型的強制轉換是通過強制轉換語句完成的,強制轉換語句的格式為“目標數據類型 變量 = (目標數據類型) 數據;”。下面給出例子:
1、定義兩個字節數據類型a、b、c,分別賦予1和2和a+b的值,進行加法運算的式子a+b=3,得出的結果“3”將會被編譯環境判定為整形數據,把這個整形數據賦值給c,系統將會報錯,這樣就需要用到格式為“目標數據類型 變量 = (目標數據類型) 數據;”的強制轉換語句。
2、根據強制轉換語句的格式,易得“byte c = (byte)(a+b);”;
3、這樣就把整形數據的“3”賦值給字節數據類型的c了,其中完成數據的強制類型轉換。
擴展資料:
基本類型 轉換原則:
1、類型轉換主要在在 賦值、方法調用、算術運算 三種情況下發生。
a、賦值和方法調用 轉換規則:從低位類型到高位類型自動轉換;從高位類型到低位類型需要強制類型轉換:
(1)布爾型和其它基本數據類型之間不能相互轉換;
(2)byte型可以轉換為short、int、、long、float和double;
(3)short可轉換為int、long、float和double;
(4)char可轉換為int、long、float和double;
(5)int可轉換為long、float和double;
(6)long可轉換為float和double;
(7)float可轉換為double;
b、算術運算 中的類型轉換:
1、基本就是先轉換為高位數據類型,再參加運算,結果也是最高位的數據類型;
2、byte short char運算會轉換為Int;
(1)如操作數之一為double,則另一個操作數先被轉化為double,再參與算術運算。
(2)如兩操作數均不為double,當操作數之一為float,則另一操作數先被轉換為float,再參與運算。
(3)如兩操作數均不為double或float,當操作數之一為long,、則另一操作數先被轉換為long,再參與算術運算。
(4)如兩操作數均不為double、float或long,則兩操作數先被轉換為int,再參與運算。
特殊:
(1)如採用+=、*=等縮略形式的運算符,系統會自動強制將運算結果轉換為目標變量的類型。
(2) 當運算符為自動遞增運算符(++)或自動遞減運算符(–)時,如果操作數為byte,short或char類型不發生改變;
參考資料:百度百科 – java關鍵字
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 強制類型轉換的規則是什麼?
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如何進行強制類型轉換
1.
轉型有兩種:
向上轉型和向下轉型(強制轉型)
2.
兩種分別如下:
1.
一種是向上轉型
1.
對於基礎數據類型
,
可以自動轉型
,比如:
int
a
=
10;
long
b
=
a;
這裡就是把int型轉成了long型
,
因為
long範圍比int大
,
這樣的轉型不會有任何影響
,
所以可以自動轉型
2.
又比如
A
a
=
new
B();
其中
A
是B
的父類
,
這也是多態
,
就是父類的對象指向子類的引用
,
你調用a對象
,
實際上是B的類
,
但是B繼承A
,
擁有A的一切屬性和方法
(不談複寫)
3.
第二種是向下轉型
,
也就是強制
這種需要強轉
,
比如
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
,
不然會報錯.
4.
不同類型之間如果要轉型
,
需要通過中間途徑
,
比如JSON
,
將A轉成JSON串
,
然後再轉換為B
在java運算中強制轉換的原理是什麼
您好,提問者:
原理說明:就是把一個桶,強轉成一個杯子(損失數據)。
自動提升:就是把一個杯子,強轉成一個桶。
//桶
int a = 3;
//杯子
double d = 2.3;
//把桶強轉成杯子
a = (int)d;
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/200197.html