- 資料類型分類

- 基本資料類型的取值範圍
-
資料轉換
1、整數類型預設的int類型;小數類型預設的double。
2、String的字元串進行類型轉換時,如果字元串中包含long整形的字元大寫L或者小寫l時,在轉換成字元串時,會出現錯誤。
示例:String str="123L";
long str1=Long.parseLong(str);
System.out.println(str1); //錯誤
3、String的字元串是float、double浮點型時,字元串可以加f、F、D、d等,在進行基本類型轉換時不會出錯。示例:String f1="12.34f"; float f2=Float.parseFloat(f1); System.out.println(f2);//結果:12.34,;d、D也一樣
4、自動類型轉換(也叫隐式類型轉換) ,其實就是小範圍的資料類型向大範圍的資料類型轉換,例如int類型轉long。
5、強制類型轉換(也叫顯式類型轉換) int b = (int)(i + j)。
6、強制類型轉換在某種情況下會丢失精度。
7、表達式的資料類型自動提升。
-
進行四則運算時
1、所有的byte型、short型和char的值将被提升到int型。2、如果一個操作數是long型,計算結果就是long型。
3、如果一個操作數是float型,計算結果就是float型。
4、如果一個操作數是double型,計算結果就是double型。
5、如果一個操作數是String型,計算結果就是String型。
案例(根據上面的規則):
byte b1 = 10;byte b2 = 20;byte b3 = b1 + b2 //錯誤,b1+b2是int類型,java的整數預設類型為int,b3是byte類型,二者類型不同,是以出錯byte b3 = (byte)(b1 + b2); //正确short s1 = 10; s1 = s1 + 12; //錯誤: 不相容的類型: 從int轉換到short可能會有損失short s2 = 10; s2 += 12; // 等同于short s2 = (short)(s2 + (short)1); //正确
- 其它
switch語句能否作用在byte上,能否作用在long上,能否作用在string上?byte的存儲範圍小于int,可以向int類型進行隐式轉換,是以switch可以作用在byte上long的存儲範圍大于int,不能向int進行隐式轉換,隻能強制轉換,是以switch不可以作用在long上string在1.7版本之前不可以,1.7版本之後switch就可以作用在string上了。switch:
源碼:public static void main(String[] args) {String s = "a" ;switch (s) {case "1":break;case "2":break;default:break;}}反編譯後:public static void main(String[] args) { String s = "a"; String str1; switch ((str1 = s).hashCode()) { case 49: case 50: if ((str1.equals("1")) || (goto 57) || (str1.equals("2"))) break; } }
完畢!!!!
給個關注,轉發,謝謝
SpringBoot開發自己的@Enable功能
Java線上CPU100% 問題排查
Restful API設計規範