亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Java 基本數據類型

前面我們學習了變量,每個變量都是有數據類型的。在 Java 中,一共有兩大數據類型:

  • 基本數據類型(內置數據類型)
  • 引用數據類型

本小節,我們將主要介紹基本數據類型,除了我們在示例中經常用到的 int 類型外,Java 語言還有其他 7 種基本數據類型。它們由語言預先定義,也稱內置數據類型,顧名思義,它們是 Java 語言中最基本的數據類型。另外注意:引用數據類型并不屬于基本數據類型的范疇,我們將在后面講解。

Java 語言支持 8 種基本數據類型:byte,shortint,long,float,doublecharboolean

1. 分類和特點

1.1 分類

基本數據類型定義在 Java類型系統中,在類型系統中,又可將基本類型分為三大類:

  • 數字型:包含 short、int、long、floatdouble,只能存儲數字數據;
  • 字符型bytechar,只能存儲字符數據
  • 布爾類型boolean,只能存儲 true(真) 或 false(假)。

1.2 范圍和默認值

基本類型都有固定的大小,因此,基本類型的值會被限制在一個范圍內。

另外,在聲明變量時,不一定總是需要分配值。編譯器會將已聲明但未初始化的字段設置合理的默認值。但是,建議為每個變量都賦初始值,這是很好的編程習慣。

具體的范圍和默認值,請參考下表:

類型 大小(位) 最小值 最大值 默認值
byte 8 -128 +127 0
char 16 0 +655,35 ‘\u0000’
short 16 -32,768 +32,767 0
int 32 -2,147,483,648 +2,147,483,647 0
long 64 -9,223,372,036,854,775,808 +9,223,372,036,854,775,807 0L
float 32 1.4 E-45 3.402,823,5 E+38 0.0f
double 64 4.9 E-324 1.797,693,134,862,315,7 E+308 0.0d
boolean false

1.3 常見錯誤

在編碼過程中,要特別注意變量不要超出其類型的范圍,請查看如下示例:

實例演示
預覽 復制
復制成功!
public class MemoryOverflow {
    public static void main(String[] args) {
      	// Integer.MAX_VALUE 用來int類型能存儲的最大值
        int maximumValue = Integer.MAX_VALUE;
      	System.out.println("int類型能夠存儲的最大值為:" + maximumValue);
        System.out.println(maximumValue + 1);
    }
}
運行案例 點擊 "運行案例" 可查看在線運行效果

運行結果:

int 類型能夠存儲的最大值為2147483647
-2147483648

我們發現 int 類型能存儲的最大值加 1 之后,變成了一個負數,這個數其實就是 int 類型能夠存放的最小值,這是因為加 1 之后變量超出了 int 類型能夠存儲的最大值,這就是我們常常說的內存溢出錯誤。

還要特別注意一點,由于 Java 是強類型的,每個變量都有一個類型,只有給定種類的值能夠存儲到該變量中。例如,不能將浮點型的數字賦值給整型變量:

public class IncompatibleTypeError{
    public static void main(String[] args) {
        int age;
      	age = 20.5f;
    }
}

源代碼在編譯階段就會報錯:

$ javac IncompatibleTypeError.java
IncompatibleTypeError.java:4: 錯誤: 不兼容的類型: 從float轉換到int可能會有損失
      	age = 20.5f;
      	      ^
1 個錯誤

2. 整型

整型就是整數類型,和數學中的整數意義相同,例如:

// 聲明一個整型變量age
int age = 10;
// 聲明一個整型變量 score
int score = 100;

整型除了 int 類型,還有 shortlong 類型,也就是短整型和長整型,他們用于存放不同范圍的整數值。需要注意的是,long 類型的值后面要以大寫字母 L 或小寫字母 l 結尾。請閱讀以下代碼:

// 聲明一個短整型變量a
short a = 20;
// 聲明一個長整型變量b
long b = 100l;
// 聲明一個長整型變量c
long c = 100L;

Tips:對于長整型,推薦后面總以大寫字母 L 結尾,因為小寫字母 l 與數字 1 容易混淆。

和數學一樣,計算機中的整型也有進制的概念,Java 可以通過以下幾種進制系統表示:

  • 十進制:基數為 10,由 0 到 9 組成; 這是我們日常生活中使用的數字系統;
  • 十六進制:基數為 16,由數字 0 到 9 和字母 A 到 F 組成;
  • 二進制:基數為 2,由數字 0 和 1 組成。

Java 中,十六進制和二進制需要以前綴區分,前綴 0x 表示十六進制,前綴 0b 表示二進制,我們來看一個示例:

// 十進制表示數字10
int decimalValue = 10;
// 十六進制表示數字10
int hexadecimalValue = 0xA;
// 二進制表示數字10
int binaryValue = 0b1010;

3. 浮點型

浮點類型就是數學中的小數,在 Java 中,浮點型又可分為單精度浮點型 (float) 和雙精度浮點型 (double)。需要注意的是,float 類型的值必須要以大寫字母 F 或小寫字母 f 結尾,我們來看一個示例:

float f1 = 1.2f;
float f2 = 10.56F;

double 類型的值可以以字母 Dd 結尾,但不做強制:

// 聲明三個double類型變量,其值都為123.3
double d1 = 123.3;
double d2 = 123.3D;
double d3 = 123.3d;

另外浮點類型也可以使用字母 Ee,后面跟上次方的數值,來表示數學中的科學計數法,我們來看一個示例:

// 科學計數法表示的 123.4
double d2 = 1.234e2;
float f1  = 1.234e2f;
// 科學計數法表示 200022.1
double d3 = 2.000221e5

4. 布爾類型

布爾類型 boolean 只有兩個可能的值:truefalse,它是用于跟蹤判斷條件真假的標志。

boolean b1 = true;
boolean b2 = false;

我們將在后面學習條件語句的時候經常使用。這時布爾類型才能發揮它真正的價值,這里不再贅述。

5. 字符類型

字符類型 char 表示一個字符。Java 中的 char 類型除了可表示標準的 ASCII 外,還可以表示一個 Unicode 字符:

實例演示
預覽 復制
復制成功!
public class CharType {
    public static void main(String[] args) {
        // 存放一個 ASCII 碼
        char a = 97;
        // 存放一個Unicode字符
        char zh = '慕';
        System.out.println(a);
        System.out.println(zh);
    }
}
運行案例 點擊 "運行案例" 可查看在線運行效果

運行結果:

a
慕

Java 語言還為 charString 類型(String 類型將在后面單獨講解),支持一些特殊的轉義序列:

符號 代表字符
\ n 換行(0x0a)
\ r 回車(0x0d)
\F 換頁(0x0c)
\ b 退格(0x08)
\ s 空格(0x20)
\ t 制表符
" 雙引號
單引號
\\ 反斜杠
\ddd 八進制字符(ddd)
\ uxxxx 十六進制 Unicode 字符(xxxx)

6. 小結

學完了本小節,我們來回顧一下,Java 提供兩大類型:基本數據類型和引用數據類型。一共有 8 種基本數據類型?;绢愋陀挚煞譃閿底中停ㄕ秃透↑c型),字符型以及布爾型。在編碼時要注意,為變量所賦的值不要超出其類型的范圍。