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