1. 程式人生 > >Java變數的宣告、初始化和作用域

Java變數的宣告、初始化和作用域

一.Java變數的宣告

在 Java 程式設計中,每個宣告的變數都必須分配一個型別。宣告一個變數時,應該先宣告變數的型別,隨後再宣告變數的名字。下面演示了變數的宣告方式。
double salary;
int age;
Boolean op;
其中第一項稱為變數型別,第二項稱為變數名。分號是必須的,這是 Java 語句的結束符號。

同一型別的不同變數,可以宣告在一行,也可以宣告在不同行,如果要宣告在同一行中,不同的變數之間用逗號分隔,例如下面的例子。
int studentNumber,people;

宣告變數的同時可以為變數賦值,也可以宣告以後再賦值。如:
int a=1; //宣告時賦值
int a; a=1; //聲明後賦值

注意:在程式執行過程中,空間內的值是變化的,這個記憶體空間就稱為變數。為了操作方便,給這個空間取了個名字,稱為變數名,記憶體空間內的值就是變數值。所以,申請了記憶體空間,變數不一定有值,要想變數有值,就必須要放入值。

例如:“int x”; 定義了變數但沒有賦值,即申請了記憶體空間,但沒有放入值;int x=5; 不但申請了記憶體空間而且還放入了值,值為 5。

注意:沒有賦值的變數,系統將按下列預設值進行初始化。
資料型別 初始值
byte 0
short 0
int 0
long 0L
char ‘\u0000’
float 0.0f
double 0
boolean false
所有引用型別 null(不引用任何物件)
二.變數的作用域(全域性變數|區域性變數)

根據作用域(作用範圍)來分,一般將變數分為全域性變數和區域性變數。從字面上理解很簡單,全域性變數就是在程式範圍之內都有效的變數,而區域性變數就是在程式中的一部分內是有效的。

在Java中,全域性變數就是在類的整個範圍之內,都有效的變數。而區域性變數就是在類中某個方法函式內或某個子類內,有效的變數,下面將從實際程式程式碼中慢慢的體會。

1.全域性變數示例
public class var{ ///a 是全域性變數
int a=10;
public static void main(String[] args){
var v=new var();
v.print();
}
void print(){
System.out.println(“全域性變數 a=”+a);
}
}
執行結果:
全域性變數 a=10

從以上例子可以看出,變數“a”的值在整個類中都有效。

2.區域性變數示例
public class Math1{ ///c 是區域性變數
public static void main(String[] args){
Math1 v=new Math1();
System.out.println(“這個是區域性變數 c=”+c);
}
void print(){
int c=20;
}
}
以上程式碼在編譯時,會出現錯誤,就是找不到變數“c”。這說明變數“c”只在方法“print()”中起作用,在方法外就無法再呼叫。

從上述程式碼中可以看出,如果一個變數在類中定義,那麼這個變數就是全域性變數;而在類中的方法、函式中定義的變數就是區域性變數。
三.全域性變數與區域性變數的宣告

public class var{
byte x; short y; int z; long a; float b;
double c; char d; boolean e;
public static void main(String[] args){
var m=new var();
System.out.println(” 列印資料 x=”+m.x);
System.out.println(” 列印資料 y=”+m.y);
System.out.println(” 列印資料 z=”+m.z);
System.out.println(” 列印資料 a=”+m.a);
System.out.println(” 列印資料 b=”+m.b);
System.out.println(” 列印資料 c=”+m.c);
System.out.println(” 列印資料 d=”+m.d);
System.out.println(” 列印資料 e=”+m.e);
}
}
執行結果:
列印資料 x=0
列印資料 y=0
列印資料 z=0
列印資料 a=0
列印資料 b=0.0
列印資料 c=0.0
列印資料 d=
列印資料 e=false

從以上例子可以看出,作為全域性變數,無需初始化,系統自動給變數賦值。除了字元型資料被賦值為空,布林型資料被賦值為 false,其他一律賦值為 0。下面再看一段程式程式碼段。

public class var1{
void printnumber(){
byte x; short y; int z; long a;
float b; double c; char d; boolean e;
}
public static void main(String[] args){
var1 m=new var1();
System.out.println(” 列印資料 x=”+m.x);
System.out.println(” 列印資料 y=”+m.y);
System.out.println(” 列印資料 z=”+m.z);
System.out.println(” 列印資料 a=”+m.a);
System.out.println(” 列印資料 b=”+m.b);
System.out.println(” 列印資料 c=”+m.c);
System.out.println(” 列印資料 d=”+m.d);
System.out.println(” 列印資料 e=”+m.e);
}
)
這個程式段編譯時就會報錯,原因是所有區域性變數都沒有初始化。從以上兩段程式程式碼得出一個結果:全域性變數可以不用進行初始化賦值工作,而區域性變數必須要進行初始化賦值工作。