首頁 > 軟體

Java資料型別超詳細範例講解

2022-12-01 14:03:22

1. Java資料型別

前面說到,程式執行時產生的臨時資料我們儲存在被稱為變數的記憶體單元裡,而變數的建立,就是在記憶體中分配一塊記憶體空間。

為什麼要定義不同的資料型別呢?當我們預先定義好資料型別後,記憶體管理系統在給變數分配記憶體空間時,就可以根據變數的資料型別為變數分配合適的儲存空間,分配的空間只能用來儲存該型別資料。總的來說,給變數定義資料型別可以讓記憶體空間得到充分的利用。

Java中資料型別一共分為兩大類,一類是基本資料型別,另一類叫做參照資料型別。其中基本資料型別一共 8 種。

2. 基本資料型別

在基本資料型別中,每一個型別都定義了佔用儲存空間的位元組數,我們可以根據現實中的意義,資料所佔用記憶體的大小等選擇合適的資料型別,達到充分利用記憶體空間的目的。

Java中定義了 8 個基本資料型別,分別是:

  • byte 位元組型
  • short 短整型
  • int 整型
  • long 長整形
  • float 單精度浮點型
  • double 雙精度浮點型
  • boolean 布林型
  • char 字元型

其中前四種是數值型變數,現在對這 8 中資料型別做一個詳解:

byte:

  • byte 資料型別是8位元、有符號的,以二進位制二補數表示的整數;
  • 最小值是 -128(-2^7);
  • 最大值是 127(2^7-1);
  • 預設值是 0;

short:

  • short 資料型別是 16 位、有符號的以二進位制二補數表示的整數
  • 最小值是 -32768(-2^15);
  • 最大值是 32767(2^15 - 1);
  • 預設值是 0;

int:

  • int 資料型別是32位元、有符號的以二進位制二補數表示的整數;
  • 最小值是 -2,147,483,648(-2^31);
  • 最大值是 2,147,483,647(2^31 - 1);
  • 預設值是 0 ;

long:

  • long 資料型別是 64 位、有符號的以二進位制二補數表示的整數;
  • 最小值是 -9,223,372,036,854,775,808(-2^63);
  • 最大值是 9,223,372,036,854,775,807(2^63 -1);
  • 預設值是 0L;

float:

  • float 資料型別是單精度、32位元、符合IEEE 754標準的浮點數;
  • float 在儲存大型浮點陣列的時候可節省記憶體空間;
  • 預設值是 0.0f;
  • 浮點數不能用來表示精確的值,如貨幣;

double:

  • double 資料型別是雙精度、64 位、符合 IEEE 754 標準的浮點數;
  • 浮點數的預設型別為 double 型別;
  • double型別同樣不能表示精確的值,如貨幣;
  • 預設值是 0.0d;

boolean:

  • boolean資料型別表示一位的資訊;
  • 只有兩個取值:true 和 false;
  • 這種型別只作為一種標誌來記錄 true/false 情況;
  • 預設值是 false;

char:

  • char 型別是一個單一的 16 位 Unicode 字元;
  • 最小值是 u0000(十進位制等效值為 0);
  • 最大值是 uffff(即為 65535);
  • char 資料型別可以儲存任何字元;

在學習基本資料型別時,不需要刻意的記背,在後面的練習中,由於資料型別的概念會一直用到,所以會慢慢熟練的掌握,現在要學習的就是了解每個資料型別,以及表示的資料範圍,思考不同資料型別的應用場景。

資料型別的最大最小值以常數的形式定義在對應的包裝類中,例如整形 int 的包裝類:java.lang.Integer

public class Test {
    public static void main(String[] args) {
        System.out.println("整型 佔用的二進位制位:"+ Integer.SIZE);
        System.out.println("最大值:"+Integer.MAX_VALUE);
        System.out.println("最小值:"+Integer.MIN_VALUE);
    }
}

執行結果:

整型 佔用的二進位制位:32
最大值:2147483647
最小值:-2147483648

每個基本資料型別都預先定義了一個預設值,上面的介紹中已經給出。

3. 參照資料型別

參照資料型別的變數非常類似與C/C++中的指標,參照型別指向一個物件,這時指向物件的這個變數就是參照變數。參照型別的變數的預設值都是 NULL。

Java是一門物件導向的程式語言,後面我們要用到的類,介面,陣列都是參照資料型別。

Student stu = new Student();

如上,在建立一個 Student 物件的時候,就是定義了一個名為 stu 的物件變數指向這個 Student 的物件。

4. 型別轉換

4.1 自動型別轉換

整型、實型、字元型資料可以混合運算。運算中,不同型別的資料先轉化為同一型別,然後進行運算。

轉換時,必須滿足轉換前的資料型別的位數要低於轉換後的資料型別(byte —> short —> char—> int —> long—> float —> double ),例如: short 資料型別的位數為16位元,就可以自動轉換位數為32的 int 型別。如下:

public class Test{
    public static void main(String[] args){
        char c1='a';//定義一個char型別
        int i1 = c1;//char自動型別轉換為int
        System.out.println("char自動型別轉換為int後的值等於"+i1);
    }
}

執行結果:

char 自動型別轉換為 int 後的值等於97

4.2 強制型別轉換

當我們要進行從高階轉換到低階時,就要進行強制型別轉換。轉換的條件是轉換的資料型別必須是相容的。如下:

public class Test{
    public static void main(String[] args){
        int i = 123;
        byte b = (byte)i;//強制型別轉換為byte
        System.out.println("int強制型別轉換為byte後的值等於"+b);
    }
}

執行結果:

int強制型別轉換為byte後的值等於123

資料型別轉換應該注意這些問題:

  • 不能對 boolean 型別進行型別轉換。
  • 不能把物件型別轉換成不相關類的物件。
  • 在把容量大的型別轉換為容量小的型別時必須使用強制型別轉換。
  • 轉換過程中可能導致溢位或損失精度。

到此這篇關於Java資料型別超詳細範例講解的文章就介紹到這了,更多相關Java資料型別內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com