java基本資料型別與自動轉換
1、java的8種基本資料型別:
資料型別 | 位數 | 預設值 | 範圍 | 舉例說明 |
---|---|---|---|---|
byte(位) | 8 | 0 | -2^7 ~ 2^7-1 | byte b = 10 |
short(短整數) | 16 | 0 | -2^15 ~ 2^15-1 | short s = 10 |
int(整數) | 32 | 0 | -2^31 ~ 2^31-1 | int i = 10 |
long(長整數) | 64 | 0 | -2^63 ~ 2^63-1 | long l = 10l |
float(單精度) | 32 | 0.0 | -2^31 ~ 2^31-1 | float f = 10.0f |
double(雙精度) | 64 | 0.0 | -2^63 ~ 2^63-1 | double d = 10.0d |
char(字元) | 16 | null | 0 ~ 2^16-1 | char c = ‘c’ |
boolean(布林值) | 8 | false | true、false | boolean b = true |
在Java中,資料型別的範圍與執行Java程式碼的機器無關。這是因為Java程式必須保證在所有機器上都能夠得到相同的執行結果,所以每一種資料型別的取值範圍必須固定。這就解決了軟體從一個平臺移植到另個平臺,或者在同一個平臺中的不同作業系統之間進行移植給程式設計師帶來的諸多問題。
2、基本型別的自動轉換
在圖中有6個黑色箭頭,表示無資訊丟失的轉換;有3個紅色箭頭,表示可能有精度損失的轉換。例如,123456789是一個大整數,它所包含的位數比float型別所能夠表達的位數多當將這個整型數值轉換為float型別時,將會得到同樣大小的結果,但卻失去了一定的精度
int n = 123456789;
float f = n;// f 的值為 1.23456792E8
當使用兩個不同型別數值進行二元操作時(例如n+f,n是整數,f是浮點數),會自動將兩個運算元轉換為同一種型別,然後再進行計算:
- 如果兩個運算元中有一個是 double型別的,另一個運算元就會轉換為 double型別。
- 否則,如果其中一個運算元是float型別,另一個運算元將會轉換為float型別。
- 否則,如果其中一個運算元是long型別,另一個運算元將會轉換為long型別。
- 否則,兩個運算元都將被轉換為int型
- 當兩個byte型別相加並結果超出其表示範圍
byte b1 = Byte.MAX_VALUE;
byte b2 = 1;
System.out.println(b1 + b2); //byte的範圍為:-128~127,輸出結果為128,可見其資料型別已自動轉換
- 當兩個short型別相加並結果超出其表示範圍
short s1 = Short.MAX_VALUE;
short s2 = 1;
System.out.println(s1 + s2); //short的範圍為:-32768~32767,輸出結果為32768
- 當兩個int型別相加並結果超出其表示範圍
int n1 = Integer.MAX_VALUE;
int n2 = 1;
System.out.println(n1 + n2); //int的範圍為:-2147483648~2147483647,輸出結果為-1
總結:byte,short自身來計算的時候有型別的提升,二元操作時自動轉為int型別;int,long,float,double自身來計算的時候沒有型別的提升,如果超出範圍了就會出現精度的損失
相關文章
- Java資料型別自動轉換(++ ,+=)Java資料型別
- php之資料型別自動轉換PHP資料型別
- JavaScript 基本資料型別轉換JavaScript資料型別
- C++基本資料型別及型別轉換C++資料型別
- 【Java】資料型別轉換Java資料型別
- 自學java筆記I 基本型別+轉義字元+資料型別的轉換Java筆記字元資料型別
- Java資料型別及型別轉換Java資料型別
- java- 型別-轉換:基本型別以及包裝型別的轉換Java型別
- Java中的基本資料型別與引用資料型別Java資料型別
- java型別轉換與強制型別轉換(轉)Java型別
- 2、java資料型別轉換Java資料型別
- Java中基本型別Array與複合型別List的互相轉換Java型別
- java 基本型別的轉換規則Java型別
- C語言中資料型別的自動型別轉換C語言資料型別
- javascript基礎(基本資料型別轉換)(六)JavaScript資料型別
- scala和java資料型別轉換Java資料型別
- Java 基本資料型別Java資料型別
- Java -基本資料型別Java資料型別
- Java基本資料型別Java資料型別
- 資料型別,型別轉換資料型別
- 基本資料型別與字串型別資料型別字串
- python之 資料型別判定與型別轉換Python資料型別
- String和基本資料型別的相互轉換資料型別
- [Java基礎]之 資料型別轉換Java資料型別
- Java 資料型別之間的轉換Java資料型別
- 資料型別轉換資料型別
- Java的基本資料型別Java資料型別
- Java註釋,識別符號,資料型別,型別轉換Java符號資料型別
- JAVA中基本資料型別和引用資料型別Java資料型別
- Guru of the week:#19 自動型別轉換. (轉)型別
- Java基礎知識-基本資料型別相互轉型Java資料型別
- 基本資料型別轉化資料型別
- JavaScript 基本資料型別(轉)JavaScript資料型別
- python 與 Mysql 資料型別轉換PythonMySQL 資料型別
- c語言中的資料型別的自動轉換原則C語言資料型別
- oracle中date資料型別與timestamp資料型別的轉換Oracle資料型別
- java基本型別和物件之間的轉換Java型別物件
- Java入門系列-05-資料型別和型別轉換Java資料型別