java 原生数据类型的转换_Java基本数据类型转换分析
基本數據類型(原生類、內置類型)8種:
整型(默認int):byte(1個字節)、short(2個字節)、int(4個字節)、long(8個字節)
浮點類型(默認double):float(4個字節)、double(8個字節)
字符型:char
布爾型:boolean
另外有四種常用但不屬于基本數據類型:數組、String、自定義類、接口。
數據類型轉換有兩種形式:1.隱式轉換2.顯式轉換
隱式轉換指從低級類型向高級類型的轉換,系統將自動執行,我們不需要做任何操作的。那么什么算高級?什么算低級?占字節數大的屬于高級,占字節數少的算低級。比如在整型中,int比short所占字節要多,那么我們在把short轉為int時,系統可以自動轉換。如:
int a;
short b=4;
a=b;
System.out.print(a);
我們可以這樣理解,把一個能裝2個雞蛋的籃子short里的雞蛋倒入和另一個能裝4個雞蛋的int籃子,這樣做是絕對可行的,所以系統是自動執行。
顯式轉換(強制類型轉換)指高級類型向低級類型轉換,格式:(類型名)要轉換的值
如果把int籃子里的雞蛋倒入short籃子這個時候就會出現編譯錯誤,需要進行顯式轉換的書寫,如下:
int a=4;
short b;
b=(short) a;
System.out.print(b);
在這時需要注意一點,short的數值范圍是:-32768 - 32767,而int范圍是-2147483648-2147483647,如果我們給int賦一個大于short最大值而小于int最大值時,比如40000,然后再進行顯式賦值給short,這時運行系統比過不會報錯,輸出的short值并不是之前int的值,精度已經丟失,所以我們一定要注意!
long型(8字節)為什么能自動轉成float型(4字節)
剛才在整型之間轉換時舉了一個雞蛋和籃子的例子,但是我們發現,如果整型轉浮點型時,那么哪個是高級,哪個是低級呢?難道還是要看字節數嗎?答案是不是的。在這里,我們把浮點型作為高級,整型作為低級的,也就是說,即使是8個字節的long型轉4個字節的float型,那么我們也不需要顯式轉換,那么這是為什么呢?
這是因為二者在內存中的存儲形式不同。
long整型數,在內存中占用8個字節共64位,它表示的數值有2的64次方,平分正負,數值范圍是負2的63次方到正2的63次方-1。
float在內存中占4個字節,共32位,但是浮點數在內存中是這樣的:V=(-1)^s * M * 2^E,浮點數的32位不是簡單的直接表示大小,而是按照一定的標準分配的。其中第1位,符號位,即S。接下來的8位,指數域,即E。剩下的23位,小數域,即M,M的取值范圍為[1,2)或[0,1)。也就是說,浮點數在內存中的二進制值不是直接轉換為十進制數值的,而是按照上述公式計算而來,通過這個公式,雖然只用到了4個字節,但是浮點數卻比長整型的最大值要大。 這也就是為什么在數據轉換的時候,long類型轉換為float類型的根本原因所在。
字符型與整型之間的相互轉換
我們沒有能將char型一步轉為整型的方法,需要先轉為String型進行過渡,然后再從String轉為整型。
char ch='2';
int a;
a=Integer.parseInt(Character.toString(ch));
System.out.println(a);
運行結果:2
整型轉為char型:
int a=22;
char[] ch;
String b=String.valueOf(a);
ch=b.toCharArray();
for(char c:ch){
System.out.println(c);
運行結果:2
2
char轉String小技巧
String str;
char ch ='a';
str=ch+"";
在char變量后直接加“”即可轉換為String哦~。
總結
以上是生活随笔為你收集整理的java 原生数据类型的转换_Java基本数据类型转换分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java finalize逃脱_关于Ja
- 下一篇: 列举java接口_Java接口特点列举说