第3周 3.2 資料型別1

安绍峰發表於2024-09-28

2.2 基本資料型別

展開:JAVA資料型別思維導圖
graph LR A(資料型別)-->B1(基本資料型別) A-->B2(引用資料型別) B1-->C1(整數型別) B1-->C2(字元型別) B1-->C3(布林型別) B1-->C4(浮點型別) C1-->D1(byte位元組型) C1-->D2(short短整型) C1-->D3(int整型) C1-->D4(long長整型) C2-->E1(char字元型) C3-->F1(boolean布林型) C4-->F2(float浮點型) C4-->F3(double雙精度浮點型) B2-->G1(類) B2-->G2(介面) B2-->G3(陣列) B2-->G4(字串)

2.2.1 基本資料型別

Java 中的基本資料型別包括以下幾種:

  • 整型:byte、short、int、long
  • 浮點型:float、double
  • 布林型:boolean
  • 字元型:char

2.2.2 基本資料型別的預設值

Java 中基本資料型別的預設值如下:

  • 整型:0
  • 浮點型:0.0
  • 布林型:false
  • 字元型:'\u0000'
  • 引用型別:null

2.2.3 基本資料型別的轉換

Java 中基本資料型別的轉換包括以下幾種:

  • 自動型別轉換:將較小的資料型別轉換為較大的資料型別,例如將 byte 轉換為 int。
  • 強制型別轉換:將較大的資料型別轉換為較小的資料型別,例如將 int 轉換為 byte。
  • 隱式型別轉換:將基本資料型別轉換為對應的包裝類,例如將 int 轉換為 Integer。
  • 顯式型別轉換:將包裝類轉換為基本資料型別,例如將 Integer 轉換為 int。
  • 型別提升:將較小的資料型別提升為較大的資料型別,例如將 byte 和 int 相加時,byte 會被提升為 int。

2.2.4 基本資料型別的範圍

Java 中基本資料型別的範圍如下:

  • byte:-128 到 127
  • short:-32,768 到 32,767
  • int:-2^31 到 2^31-1
  • long:-2^63 到 2^63-1
  • float:大約 ±3.40282347E+38F(有效位數為 6-7 位)
  • double:大約 ±1.79769313486231570E+308(有效位數為 15 位)
  • char:0 到 65535
  • boolean:true 或 false

2.2.5 基本資料型別的常量

Java 中基本資料型別的常量包括以下幾種:

  • 整型常量:例如 10、-20、0x1A 等。
  • 浮點型常量:例如 3.14、-0.5、1.23E-4 等。
  • 布林型常量:true 和 false。
  • 字元型常量:例如'a'、'b'、'\u0000'等。
  • **說明**
  • 字元型常量可以使用跳脫字元表示特殊字元,例如'\n'表示換行符,'\t'表示製表符。
  • '\u0000'表示一個空白字元,即在單引號之間沒有任何字元。之所以能這樣表示是因為,Java 採用的是 Unicode 字符集,Unicode 字元以\u 開頭,空白字元在 Unicode 碼錶中對應的值為'\u0000'。

2.3 變數與常量

2.3.1 識別符號和關鍵字

1.識別符號和關鍵字

Java 中的識別符號是指用來標識變數、類、方法等的名稱,關鍵字是 Java 語言中具有特殊含義的保留字。Java 中的識別符號必須以字母、下劃線或美元符號開頭,後面可以跟字母、數字、下劃線或美元符號。Java 中的關鍵字不能用作識別符號。

(1)識別符號的命名規則

Java 中的識別符號必須以字母、下劃線或美元符號開頭,後面可以跟字母、數字、下劃線或美元符號。Java 中的識別符號不能包含空格,不能包含特殊字元,不能包含 Java 關鍵字。

(2)關鍵字

Java 中的關鍵字包括以下幾種:

  • 基本資料型別關鍵字:int、float、double、boolean、char、byte、short、long。

  • 控制流程關鍵字:if、else、switch、case、default、for、while、do、break、continue、return、try、catch、finally。

  • 類與物件關鍵字:class、interface、extends、implements、new、this、super、instanceof。

  • 訪問控制關鍵字:public、protected、private。

  • 其他關鍵字:void、null、true、false、import、package、abstract、final、native、static、strictfp、synchronized、transient、volatile。
    表 Java 常用關鍵字及含義

    關鍵字 含義
    abstract 宣告抽象類或抽象方法
    boolean 布林型別
    break 跳出迴圈或 switch 語句
    byte 位元組型別
    case switch 語句中的分支
    catch 捕獲異常
    char 字元型別
    class 宣告類
    continue 跳過本次迴圈
    default switch 語句中的預設分支
    do do-while 迴圈
    double 雙精度浮點型別
    else if 語句中的 else 分支
    extends 繼承
    final 宣告常量或不可變類
    finally try-catch 語句中的 finally 塊
    float 單精度浮點型別
    for for 迴圈
    if if 語句
    implements 實現介面
    import 匯入類或包
    instanceof 判斷物件是否為某個類的例項
    int 整型
    interface 宣告介面
    long 長整型
    native 宣告本地方法
    new 建立物件
    null 空值
    package 宣告包
    private 私有訪問控制
    protected 受保護訪問控制
    public 公共訪問控制
    return 返回值
    short 短整型
    static 靜態方法或變數
    strictfp 嚴格浮點運算
    super 呼叫父類方法或變數
    switch switch 語句
    synchronized 同步方法或程式碼塊
    this 呼叫當前物件的方法或變數
    throw 丟擲異常
    throws 宣告方法可能丟擲的異常
    transient 不會被序列化的變數
    try try-catch 語句中的 try 塊
    void 無返回值
    volatile 變數在多個執行緒中可見
    while while 迴圈

Java 中的關鍵字具有以下特點:

  • 關鍵字都是小寫的。
  • 關鍵字不能用作識別符號。
  • 關鍵字具有特殊的含義,不能隨意使用。

2.3.2 變數和常量

變數:變數是程式中用於儲存資料的容器,每個變數都有一個名稱(也稱為識別符號)和一個資料型別。變數可以在程式中多次使用,以儲存和運算元據。

常量:常量是程式中用於儲存固定值的容器,一旦被賦值,就不能再改變。常量通常用於表示程式中的固定值,如數學常數 π、物理常數等。

Java 中的變數型別有:

  • 基本資料型別:包括整數型別(byte、short、int、long)、浮點型別(float、double)、字元型別(char)和布林型別(boolean)。
  • 引用資料型別:包括類、介面、陣列等。

Java 中的常量型別有:

  • 字面量常量:包括整數常量、浮點常量、字元常量和字串常量。

  • 列舉常量:使用 enum 關鍵字定義的常量集合。

  • 常量變數:使用 final 關鍵字宣告的變數,其值在初始化後不能被改變。


    1.變數

    (1)變數的定義

    變數的定義格式如下:

    資料型別 變數名;
    

    例如:

    int num;
    String name;
    
    變數的命名規則

    變數的命名規則如下:

    • 變數名必須由字母、數字和下劃線組成,不能以數字開頭。
    • 變數名不能包含空格和特殊字元(如@、#、$等)。
    • 變數名區分大小寫。
    • 變數名不能與 Java 關鍵字衝突。
    • 變數名應具有一定的意義,以便於理解和維護程式碼。
    (2)變數的賦值和初始化

    變數的初始化是指在定義變數的同時為其賦值。變數的初始化格式如下:

    資料型別 變數名 = 值;
    

    例如:

    int num = 10;
    String name = "John";
    int intint = 0; //預設值為0
    int max=Integer.MAX_VALUE; //最大值
    
    (3)變數的使用

    變數在使用之前必須先進行初始化,否則會出現編譯錯誤。變數的使用格式如下:

    變數名 = 值;
    

    例如:

    num = 20;
    name = "Tom";
    
(4)變數的作用域

變數的作用域是指變數在程式中的可見範圍。根據變數的作用域,可以將變數分為區域性變數和成員變數。

  • 區域性變數:在方法或程式碼塊中定義的變數,只能在定義它的方法或程式碼塊中使用。
  • 成員變數:在類中定義的變數,可以在類的任何方法中使用。
    例如:
public class MyClass {
    int num; //成員變數
    public void myMethod() {
        int localNum; //區域性變數
    }
}

在上述程式碼中,num 是成員變數,可以在 myMethod 方法中使用。localNum 是區域性變數,只能在 myMethod 方法中使用。

2.常量

常量的定義格式如下:

final 資料型別 常量名 = 值;

例如:

final double PI = 3.1415926;
final String NAME = "John";

常量的值在程式執行期間不能被修改。常量的命名規則與變數類似,但常量名通常使用大寫字母,以示其不可變性。


2.4 資料型別間的相互轉換

Java 中的資料型別可以分為兩大類:基本資料型別和引用資料型別。這裡主要講基本資料型別之間的轉換。

  • 基本資料型別之間的轉換可以分為自動型別轉換和強制型別轉換。

    2.4.1 自動(隱式)型別轉換

    自動型別轉換是指當兩個不同型別的資料進行運算時,系統會自動將它們轉換為相同型別。自動型別轉換的規則如下:

    • 如果兩個運算元都是整數型別,則將它們轉換為範圍更大的整數型別。
    • 如果兩個運算元都是浮點型別,則將它們轉換為範圍更大的浮點型別。
    • 如果一個運算元是整數型別,另一個運算元是浮點型別,則將整數型別轉換為浮點型別。
      例如:
    int a = 10;
    double b = 3.14;
    double c = a + b; //a被轉換為double型別,然後與b相加
    

    在上述程式碼中,a 是整數型別,b 是浮點型別,a 被自動轉換為 double 型別,然後與 b 相加,得到的結果是 double 型別。

    2.4.2 強制(顯式)型別轉換

    強制型別轉換是指將一個資料型別轉換為另一個資料型別。強制型別轉換的格式如下:

    (目標型別) 值
    

    例如:

    int a = 10;
    double b = 3.14;
    int c = (int) b; //將b轉換為int型別
    

    在上述程式碼中,b 是 double 型別,需要將其轉換為 int 型別,因此使用強制型別轉換,將 b 轉換為 int 型別,得到的結果是 int 型別。
    強制型別轉換可能會導致資料丟失或溢位,因此在使用強制型別轉換時需要謹慎。
    例如,將一個 double 型別的值轉換為 int 型別時,小數部分將被截斷,可能導致資料丟失。因此,在使用強制型別轉換時,需要確保轉換後的資料不會丟失或溢位。

    double d = 3.14;
    int e = (int) d; //e的值為3,小數部分被截斷
    

    在上述程式碼中,d 是 double 型別,需要將其轉換為 int 型別,因此使用強制型別轉換,將 d 轉換為 int 型別,得到的結果是 int 型別,但小數部分被截斷,因此 e 的值為 3。

    2.4.3 基本資料型別與字串之間的轉換

    基本資料型別與字串之間的轉換可以透過以下兩種方式實現:

    • 使用字串的靜態方法 valueOf()將基本資料型別轉換為字串。
    • 使用字串的構造方法將基本資料型別轉換為字串。
      例如:
    int a = 10;
    String str1 = String.valueOf(a); //將int型別轉換為字串
    String str2 = Integer.toString(a); //將int型別轉換為字串
    String str3 = "" + a; //將int型別轉換為字串
    

    在上述程式碼中,a 是 int 型別,需要將其轉換為字串,因此使用 valueOf()方法或 toString()方法或字串連線運算子將 a 轉換為字串。

    double b = 3.14;
    String str4 = String.valueOf(b); //將double型別轉換為字串
    String str5 = Double.toString(b); //將double型別轉換為字串
    String str6 = "" + b; //將double型別轉換為字串
    

    在上述程式碼中,b 是 double 型別,需要將其轉換為字串,因此使用 valueOf()方法或 toString()方法或字串連線運算子將 b 轉換為字串。
    將字串轉換為基本資料型別可以透過以下兩種方式實現:

  • 使用包裝類的靜態方法 parseXXX()將字串轉換為基本資料型別。

  • 使用包裝類的構造方法將字串轉換為基本資料型別。
    例如:

String str7 = "123";
int c = Integer.parseInt(str7); //將字串轉換為int型別
double d = Double.parseDouble(str7); //將字串轉換為double型別

在上述程式碼中,str7 是字串,需要將其轉換為 int 型別或 double 型別,因此使用 parseInt()方法或 parseDouble()方法將 str7 轉換為 int 型別或 double 型別。

String str8 = "3.14";
double e = Double.parseDouble(str8); //將字串轉換為double型別
int f = Integer.parseInt(str8); //將字串轉換為int型別

在上述程式碼中,str8 是字串,需要將其轉換為 double 型別或 int 型別,因此使用 parseDouble()方法或 parseInt()方法將 str8 轉換為 double 型別或 int 型別。


相關文章