2.4 資料型別的轉換
目的:進行不同資料型別之間運算。
種類:自動型別轉換 和 強制型別轉換
自動型別轉換
自動向上型別轉換(小範圍型別轉為大範圍型別)
byte
→short
(char
) →int
→long
→float
→double
語法:eg: [小範圍型別] 變數1 = 變數1的值
[大範圍型別] 變數2 = 變數1
package datatype;
public
class
typeconversion
}
輸出結果:
2注意:1.9934
56.0
2.299999952316284
byte
,short
,char
參與資料型別時,會先轉為int
型別再進行運算。
eg:
//錯誤
byte by1=5;
byte by2=4;
byte by3=by1+by2;
//報錯:不能從int轉換為byte
system.out.
println
(by3)
;//正確
final
byte by1=5;
final
byte by2=4;
//final修飾變數,使變數不會先轉為int型別再進行運算。
byte by3=by1+by2;
system.out.
println
(by3)
;
2.char
比較特殊,char
可以自動轉換成int
、long
、float
和double
,不能自動轉 換成byte
和short
,同時byte
和short
也不能自動轉成char
。
強制型別轉換
強制向下型別轉換(大範圍型別轉為小範圍型別),通常有精度損失,慎用。
**double
→float
→long
→int
→short
(char
) →byte
**
語法:eg: [大範圍型別] 變數1 = 變數1的值
[小範圍型別1] 變數2 = (小範圍型別1) 變數1
package datatype;
public
class
strongtypeconversion
}
輸出結果:
23.631453注意:int型別轉換為byte型別時,只會保留int型別低8位(i變數值的二進位制數的後8位),即1個位元組。3534
34
eg:
int i=
489;
byte by=
(byte
) i;
system.out.
println
(by)
;
輸出結果:
-23原因:489(int)轉換為byte型別時,只會保留489(1 1110 1001 )低8位,所以by的二進位制數為1110 1001(最高位是符號位,1代表負數,在計算機中負數儲存的是補碼), 則該負數的原碼是1001 0111(最高位1代表負號),即-001 0111=-23。補碼 → 原碼計算方法如下:
補碼: 1110 1001 (最高位1代表負號)資料溢位問題其餘7位:110 1001
取反: 001 0110
取反後+1:001 0111
轉十進位制: 23
添負號: -23
即原碼為:-23
當乙個資料溢位時,它會達到反向的最大值。
eg:
package datatype;
public
class
overflow
}
輸出結果
by1= 127by2= -128
sh1= 32767
sh2= -32768
i1 = 2147483647
i2 = -2147483648
ch1= 65535
ch2= 0
js的兩種資料型別
js中的資料型別總體來說分為兩種,他們分別是 1 值型別 基本型別 數值型 number 字元型別 string 布林值型 boolean null 和 underfined 2 引用型別 類 函式,物件,陣列等 值型別理解 變數之間的互相賦值,是指開闢一塊新的記憶體空間,將變數值賦給新變數儲存到新...
Qt 各種資料型別轉換
1 qstring string qstring.tostdstring 2 string qstring qstring fromstdstring string 3 qstring int,double,char qstring toint qstring todouble qstring.to...
C 各種資料型別轉換
在在做一些互操作的時候往往需要一些型別的相互轉換,比如用c 訪問win32api的時候往往需要向api中傳入dword引數 即 uint引數這些數值所表示的資料在實際的應用中可能需要以字元的形式顯示,但是c 對api的關係無法跟c 相比,所以在c 中進行一些型別資料的轉換十分必要了,下面將用到的一些...