1. 程式人生 > 其它 >關於Java基本資料型別那些小細節(變數宣告、賦值等)

關於Java基本資料型別那些小細節(變數宣告、賦值等)

技術標籤:java資料型別

關於Java基本資料型別那些小細節(變數宣告、賦值等)

前提:瞭解基本型別https://www.runoob.com/java/java-basic-datatypes.html

一、變數宣告

  • 整數型預設int
  • 浮點型預設double

  1、宣告float型別

        float f11 = 1;      //賦值整數不會報錯,可加f可不加,會自動轉換成帶精度的數
//      float f12 = 1.0;    //賦值小數會報錯,要加上f字尾
        float f13 = 1.0f

注意:當進行兩個數(整數/浮點數)進行比較,float型別的變數值帶f字尾時,有兩種情況。(這個細節很容易忽視,就好比字串比較時,經常會習慣性用==操作符)

  (一)被比較的數為帶精度的整數,例:1.0等。

    此時,被比較數不需要加f字尾,也能正確得到比較結果。如下圖所示:

在這裡插入圖片描述

  (二)被比較的數為純小數,例:1.8等。

    此時,被比較數需要加f字尾,才能正確得到比較結果。如下圖所示:

    被比較數不加f字尾時:

在這裡插入圖片描述

    被比較數加f字尾時:

在這裡插入圖片描述

  2、宣告double型別

//        宣告double型別時,可加d字尾可不加,會自動轉換為帶精度的數
        double d11 = 1;
        double d12 = 1.0;
        double d13 = 1.0d;

注意:當進行兩個數(整數/浮點數)進行比較時,與純小數比較時,也有兩種情況。(這個情況主要還是和精度有關,一般不容易犯錯,但也要注意)

  (一)被比較的數為不帶字尾的純小數,例:1.8等

    因為浮點數預設double,不帶字尾的純小數都預設轉換為double了,所以能得到正確的比較結果。如下圖所示:

在這裡插入圖片描述

  (二)被比較的數為帶字尾f的純小數,例:1.8f等

    因為double比float精度高,所以不能得到正確的比較結果。如下圖所示:

在這裡插入圖片描述

  3、宣告long型別

//        宣告long型別
//        long l11 = 444444444444444; //報錯,要加上l字尾
        long l12 = 444444444444444l;

  4、區域性變數宣告時沒有初始化就使用,會報錯(有點跳戲了,不過和變數宣告還是有一絲絲關係啦~~~)

        int a;
        int b = 0;
        int c = 0, d = 0;
//        System.out.println(a);  //未初始化就使用會報錯(區域性變數)
        System.out.println(b);  //初始化使用不會報錯(區域性變數)

二、型別轉換與賦值

  • 向上自動轉換
  • 向下強制轉換

  備註: byte的型別的範圍是 -128 ~ 127 ( -2^(8-1) ~ 2^(8-1) -1 )

  1、賦值問題

   舉例:byte賦值

        //直接賦值超出範圍報錯,如下
//        byte exampleB1 = 128;