Java 變數和資料型別
在 Java 程式的生命週期中,變數可以被認為是一個為你保留值的容器。為每個變數分配一個資料型別,它指定它可以容納的值的型別和數量。
要在程式中使用變數,你需要執行 2 個步驟
- 變數宣告
 - 變數初始化
 
變數宣告:
要宣告變數,必須指定資料型別併為變數指定唯一名稱。

其他有效宣告的示例是
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 中,有三種型別的變數:
- 區域性變數
 - 例項變數
 - 靜態變數
 
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 中,有兩種型別的資料型別:
- 原始資料型別
 - 非原始資料型別
 
原始資料型別
原始資料型別是預定義的,可在 Java 語言中使用。原始值不與其他原始值共享狀態。
有 8 種基本型別:byte,short,int,long,char,float,double 和 boolean
整數資料型別
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