變數根據其所在位置有可分為三類:
一、區域變數 (Local variables)
1.定義在函數式內,僅在函數內有效。
2.由於僅在函數內有效,不能使用存取權限修飾詞 (access level modifier)。
3.無預設值,使用前必須先賦值。
例子:
import java.io.*;
public class Cat{
public void catAge(){
int age = 0;
age = age + 7;
System.out.println("Cat age is : " + age);
}
public static void main(String args[]){
Cat acat = new Cat();
acat.catAge();
}
}
二、實作變數 (Instance variables)
1.定義在類別內,但函數式外。
2.類別內有效,可使用存取權限修飾詞 (access level modifier)來改變存取限制:
private:僅類別內有效。
public:除類別內,子類別內也有效。
3.有預設值,依資料類型而不同。
import java.io.*;
public class Cat{
// this instance variable is visible for any child class.
public String name;
// age variable is visible in Cat class only.
private int age;
// The name variable is assigned in the constructor.
public Cat (String catName){
name = catName;
}
// The age variable is assigned a value.
public void setAge(double catAge){
age = catAge;
}
// This method prints the cat details.
public void printCat(){
System.out.println("name : " + name );
System.out.println("Age :" + age);
}
public static void main(String args[]){
Cat acat = new Cat("Sarah");
acat.setAge(3);
acat.printCat();
}
}
三、類別變數 (Class/static variables)
1.就是用static定義的實作變數。
2.不管有幾個實作(instance),一個類別內的類別變數都是同一個。
3.類別變數可使用:ClassName.VariableName 直接呼叫。
4.只有程式結束,類別變數才會被回收。
5.將類別變數宣告為:public static final 的話,要整個變數名大寫
import java.io.*;
public class Cat{
public static final String BREED = "Bulldog";
public static void main(String args[]){
System.out.println(BREED);
}
}
[image credit: S. Charles]