JAVA数据类型的转换及数据的原反补三码
一、自動類型轉換/隱式轉換
規律一:小的類型自動轉化為大的類型
short s = 7;
long l = s;
long l = 500; // 500是一個整數,整數默認為int,int的范圍比long小,所以可以自動轉換
float f = 56.71F;
double d = f;
int i = 300;
double d = i;
規律二:整數類型可以自動轉化為浮點類型,可能會產生舍入誤差
int i = 500;
float f = i; // i是int類型,int的取值范圍比float小,所以int可以自動轉化為float
long l = 259L;
float f = l;
float f = -25; // -25是整數
規律三:字符可以自動提升為整數
char c = ‘a’;
int i = c;
二、強制類型轉換/顯式轉換規律
規律一:當把大的類型轉化為小的類型的時候,因為補碼的換算問題,所以可能會產生一些想不到數據
double d = 6.4;
int i = (int)d;
規律二:小數在轉化為整數的時候是舍棄小數位
三、數據的原反補三碼
1.數據類型的最高位是符號位 — 如果最高位是0,則表示一個正數;如果最高位是1,則表示一個負數。
2. 計算機中存儲的是數據的補碼,計算的也是數據的補碼,直接計算出來的二進制數字是數據的原碼。
如果是正數,那么原反補三碼一致
int i = 7;
00000000 00000000 00000000 00000111 原碼
00000000 00000000 00000000 00000111 反碼
00000000 00000000 00000000 00000111 補碼
如果是負數,那么反碼是在原碼的基礎上,最高位不變,其余位0和1互換;補碼是在反碼的基礎上+1
int j = -9;
10000000 00000000 00000000 00001001 原碼
11111111 11111111 11111111 11110110 反碼
11111111 11111111 11111111 11110111 補碼
注意:規定用-0表示當前類型的最小值
任意非零數字/0.0 任意非零小數/0 - Infinity - 無窮大
0/0.0 0.0/0.0 0.0/0 - NaN - Not a Number - 非數字
四、綜合的看一下,在類型轉換的時候需要遵循哪些規則?
第一條:八種基本數據類型中,除 boolean 類型不能轉換,剩下七種類型之間都可以進行轉換;第二條:如果整數型字面量沒有超出 byte,short,char 的取值范圍,可以直接將其賦值給byte,short,char 類型的變量;第三條:小容量向大容量轉換稱為自動類型轉換,容量從小到大的排序為: byte < short(char) < int < long < float < double,其中 short和 char都占用兩個字節,但是char 可以表示更大的正整數;第四條:大容量轉換成小容量,稱為強制類型轉換,編寫時必須添加“強制類型轉換符”,但運行時可能出現精度損失,謹慎使用;第五條:byte,short,char 類型混合運算時,先各自轉換成 int 類型再做運算;第六條:多種數據類型混合運算,各自先轉換成容量最大的那一種再做運算;所有的筆試題都超不出以上的6條規則。總結
以上是生活随笔為你收集整理的JAVA数据类型的转换及数据的原反补三码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【图文详解】JAVA中的转义字符
- 下一篇: 【面试】JAVA六种运算符详解及优先级