Java 變數和資料型別

在 Java 程式的生命週期中,變數可以被認為是一個為你保留值的容器。為每個變數分配一個資料型別,它指定它可以容納的值的型別和數量。

要在程式中使用變數,你需要執行 2 個步驟

  1. 變數宣告
  2. 變數初始化

變數宣告:

要宣告變數,必須指定資料型別併為變數指定唯一名稱。

Java 變數和資料型別

其他有效宣告的示例是

int a,b,c;
float pi;
double d;
char a;

變數初始化:

要初始化變數,必須為其分配有效值。

其有效初始化的示例是

pi =3.14f;
do =20.22d;
a= 'v';

你可以組合變數宣告和初始化。

示例:

int a=2,b=4,c=6;
float pi=3.14f;
double do=20.22d;
char a=v;

變數型別

在 Java 中,有三種型別的變數:

  1. 區域性變數
  2. 例項變數
  3. 靜態變數

Java 區域性變數

區域性變數是在方法體內宣告的變數。

Java 例項變數

例項變數是在沒有 STATIC 關鍵字的情況下定義的。它們是在方法宣告之外定義的。它們是特定於物件的,稱為例項變數。

Java 靜態變數

靜態變數僅在程式執行開始時初始化一次。在初始化任何例項變數之前,應首先初始化這些變數。

Java 中的變數型別示例

class Tastones {
    int data = 99; //instance variable  
    static int a = 1; //static variable  
    void method() {
        int b = 90; //local variable  
    }
}

Java 中的資料型別

資料型別對要儲存在變數中的不同值進行分類。在 Java 中,有兩種型別的資料型別:

  1. 原始資料型別
  2. 非原始資料型別

原始資料型別

原始資料型別是預定義的,可在 Java 語言中使用。原始值不與其他原始值共享狀態。

有 8 種基本型別:byteshortintlongcharfloatdoubleboolean 整數資料型別

byte (1 byte)
short (2 bytes)
int (4 bytes)
long (8 bytes)

浮點數資料型別

float (4 bytes)
double (8 bytes)

字元資料型別

char (2 bytes)

布林值資料型別

boolean (1 byte) (true/false)

 Java 資料型別

資料型別 預設值 預設大小
byte 0 1 個位元組
short 0 2 個位元組
int 0 4 個位元組
long 0L 8 個位元組
float 0.0f 4 個位元組
double 0.0d 8 個位元組
boolean 1 位
char ‘\u0000’ 2 個位元組

要記住的要點:

  • 所有數字資料型別都有極性(+/-)。
  • 所有平臺上的資料型別大小保持不變(標準化)
  • Java 中的 char 資料型別是 2 個位元組,因為它使用 UNICODE 字符集。Java 憑藉它很容易支援國際化。UNICODE 是一個字符集,涵蓋了世界上所有已知的指令碼和語言。

Java 變數型別轉換和型別轉換

一種型別的變數可以接收另一種型別的值。這裡有 2 個例子,

**情況 1)**較小容量的變數被分配給另一個較大容量的變數。

double d;
int i = 10;
d = i;

此過程為自動,非顯式的,被稱為轉換

**情況 2)**較大容量的變數被分配給另一個較小容量的變數

double d = 10;
int i;
i = (int)d;

在這種情況下,你必須顯式指定型別轉換運算子。此過程稱為型別轉換

如果你沒有指定型別轉換運算子,那麼編譯器給出錯誤。由於此規則是由編譯器強制執行的,因此它使程式設計師意識到他將要執行的轉換可能會導致資料丟失,這樣來防止意外丟失。

型別轉換示例

class Demo {
 public static void main(String args[]) {
  byte x;
  int a = 270;
  double b = 128.128;
  System.out.println("int converted to byte");
  x = (byte) a;
  System.out.println("a and x " + a + " " + x);
  System.out.println("double converted to int");
  a = (int) b;
  System.out.println("b and a " + b + " " + a);
  System.out.println("\ndouble converted to byte");
  x = (byte)b;
  System.out.println("b and x " + b + " " + x);
 }
}

輸出:

int converted to byte
a and x 270 14
double converted to int
b and a 128.128 128
double converted to byte
b and x 128.128 -128