1. 程式人生 >實用技巧 >其它 >Java資料型別及型別轉換

Java資料型別及型別轉換


技術標籤:java資料型別

Java資料型別及型別轉換

Java是一種強型別語言:要求變數的使用嚴格符合規定,所有變數都必須定義後才能使用

好處:安全性高

弊端:速度會下降

一、Java的資料型別分為兩大類(Demo01)

  • 八大基本型別(primitive type)

    1. 數值型別

      (1)整數型別

      ①byte 佔1個位元組(範圍:-128—127)

      ②short 佔2個位元組(範圍:-32768—32767)

      ③int 佔4個位元組(範圍:-2147483648—2147483647)

      ④long 佔8個位元組,long型別定義的時候要在數字後面加個L(範圍:-9223372036854775808—9223372036854775807)

      (2)浮點型別

      ①float 佔4個位元組,float型別定義的時候要在數字後面加個F

      ②double 佔8個位元組

      (3)字元型別:char 佔2個位元組(簡單理解就是隻能一個字)

    2. boolean型別:佔1位其值只有true和false兩個

  • 引用型別(reference type)

    1. 類
    2. 介面
    3. 陣列

補充

  1. 位(bit):是計算機內部資料儲存的最小單位,11001100就是一個八位的二進位制數。

  2. 位元組(byte):是計算機中資料處理的基本單位,習慣上用大寫的B來表示。

  3. 1B(byte 位元組)=8bit(位)

  4. 字元:是指計算機中使用的字母、數字、字和符號

  5. 最好完全避免使用浮點數來做比較(浮點數是有限的,也是離散的,存在舍入誤差,不能精確表示)

  6. 所有字元的本質還是數字

public class Demo01 {
    public static void main(String[] args) {
        float f = 0.1f;  //0.1  f:0.1
        double d = 1.0/10;  //0.1  d:0.1
        System.out.println(f==d);  //false
//======================================================
        float d1 = 23131312313132113f;
        float d2 = d1 + 1;
        System.out.println(d1==d2);//true
        //浮點數是有限的,也是離散的,存在舍入誤差,不能精確表示
//======================================================        
        char c1 = 'a';
        char c2 = '中';
        System.out.println(c1);//a
        System.out.println((int)c1);//97   強制轉換
        System.out.println(c2);//中
        System.out.println((int)c2);//20013   強制轉換
    }
}

二、型別轉換(Demo02)

由於Java是強型別語言,所以要進行有些運算的時候,需要用到型別轉換

  1. 強制轉換 格式:(型別)變數名 【從高到低】
  2. 自動轉換 【從低到高】

低 --------------------------------------------------------->高

byte,short,char—>int—>long—>float—>double

注意:

  1. 不能對布林值進行轉換
  2. 不能把物件型別轉換為不相干的型別
  3. 在把高容量轉換到低容量的時候,強制轉換
  4. 轉換的時候可能存在記憶體溢位,或者精度問題(特別是操作比較大的數的時候,要多注意溢位問題)
  5. 運算中,不同型別的資料先轉化為同一型別,再進行運算
public class Demo02 {
    public static void main(String[] args) {
        int money = 1000000000;
        int years = 20;
        int total = money*years;
        long total2 = money*years;
        long total3 = money*(long)years;
        System.out.println(total);
        //-1474836480(計算的時候溢位了)
        System.out.println(total2);
        //-1474836480(預設是int型別,先計算出來的結果就已經是int的-1474836480了,然後才賦值給long型別的total2)
        System.out.println(total3);
        //20000000000
    }
}