變數:區域性變數、成員變數(例項變數)、類變數(靜態變數)
區域性變數:
1、宣告在方法體(方法、構造方法)或**塊中;
2、當方法被呼叫時才有機會被建立,方法執行完畢後自動銷毀;
3、只對所在**塊或方法體可見;
4、區域性變數沒有預設值,所以區域性變數被宣告後,必須經過初始化,才可以使用(使用前必須先賦值);
5、修飾訪問符不能用於區域性變數,只能被final修飾;
6、區域性變數是在棧上分配的;
成員變數(例項變數):
1、宣告在類體中,但在方法、構造方法和語句塊之外;
2、當例項化物件時建立,物件銷毀時銷毀;
3、對所在類體的所有方法可見,對外可見性根據訪問修飾符決定;
4、可以使用訪問修飾符、static、final修飾;
5、成員變數可以不用賦初始化值,每種型別都有自己的預設值;
6、當被final修飾時,必須賦初始化值;
7、例項變數對於類中的方法、構造方法或語句塊是可見的。一般情況下應該把例項變數設為私有。通過使用訪問修飾符可以使用例項變數對子類可見;
public class employee
//設定salary的值
public void setsalary(double empsal)
// 列印資訊
public void printemp()
public static void main(string args)}
類變數(靜態變數):
1、宣告在類體中,並用static修飾,但必須在方法、構造方法和語句塊之外;
2、在類載入時建立,在jvm關閉時銷毀(靜態變數在程式開始時建立,在程式結束時銷毀);
3、儲存在靜態儲存區,該變數的資料是被該類所有物件所共享; 4、
類變數被宣告為public static final型別時,類變數名稱一般建議使用大寫字母。如果靜態變數不是public和final型別,其命名方式與例項變數以及區域性變數的命名方式一致。
public class employee }
成員變數和類變數的區別
由static修飾的變數稱為靜態變數,其實質上就是乙個全域性變數。如果某個內容是被所有物件所共享,那麼該內容就應該用靜態修飾;沒有被靜態修飾的內容,其實是屬於物件的特殊描述。
不同的物件的例項變數將被分配不同的記憶體空間, 如果類中的成員變數有類變數,那麼所有物件的這個類變數都分配給相同的一處記憶體,改變其中乙個物件的這個類變數會影響其他物件的這個類變數,也就是說物件共享類變數。
成員變數和類變數的區別:
1、兩個變數的生命週期不同
成員變數隨著物件的建立而存在,隨著物件的**而釋放。
靜態變數隨著類的載入而存在,隨著類的消失而消失。
2、呼叫方式不同
成員變數只能被物件呼叫。
靜態變數可以被物件呼叫,還可以被類名呼叫。
3、別名不同
成員變數也稱為例項變數。
靜態變數也稱為類變數。
4、資料儲存位置不同
成員變數儲存在堆記憶體的物件中,所以也叫物件的特有資料。
靜態變數資料儲存在方法區(共享資料區)的靜態區,所以也叫物件的共享資料。
static 關鍵字,是乙個修飾符,用於修飾成員(成員變數和成員函式)。
特點:1、想要實現物件中的共性資料的物件共享。可以將這個資料進行靜態修飾。
2、被靜態修飾的成員,可以直接被類名所呼叫。也就是說,靜態的成員多了一種呼叫方式。類名.靜態方式。
3、靜態隨著類的載入而載入。而且優先於物件存在。
弊端:1、有些資料是物件特有的資料,是不可以被靜態修飾的。因為那樣的話,特有資料會變成物件的共享資料。這樣對事物的描述就出了問題。所以,在定義靜態時,必須要明確,這個資料是否是被物件所共享的。
2、靜態方法只能訪問靜態成員,不可以訪問非靜態成員。
因為靜態方法載入時,優先於物件存在,所以沒有辦法訪問物件中的成員。
3、靜態方法中不能使用this,super關鍵字。
因為this代表物件,而靜態在時,有可能沒有物件,所以this無法使用。
什麼時候定義靜態成員呢?或者說:定義成員時,到底需不需要被靜態修飾呢?
成員分兩種:
1、成員變數。(資料共享時靜態化)
該成員變數的資料是否是所有物件都一樣:
如果是,那麼該變數需要被靜態修飾,因為是共享的資料。
如果不是,那麼就說這是物件的特有資料,要儲存到物件中。
2、成員函式。(方法中沒有呼叫特有資料時就定義成靜態)
如果判斷成員函式是否需要被靜態修飾呢?
只要參考,該函式內是否訪問了物件中的特有資料:
如果有訪問特有資料,那方法不能被靜態修飾。
如果沒有訪問過特有資料,那麼這個方法需要被靜態修飾。
成員變數和靜態變數的區別:
1、成員變數所屬於物件。所以也稱為例項變數。
靜態變數所屬於類。所以也稱為類變數。
2、成員變數存在於堆記憶體中。
靜態變數存在於方法區中。
3、成員變數隨著物件建立而存在。隨著物件被**而消失。
靜態變數隨著類的載入而存在。隨著類的消失而消失。
4、成員變數只能被物件所呼叫 。
靜態變數可以被物件呼叫,也可以被類名呼叫。
所以,成員變數可以稱為物件的特有資料,靜態變數稱為物件的共享資料。
Java 靜態變數 方法等的總結
public class test class student public class test class student 錯誤的示範 public static void setname string name public class test class student private s...
java基礎學習 java變數
記憶體如何儲存資料?我們把記憶體看做旅館,先根據資料的需求為他安排合適的房間。如 我是乙個人,開的房間是單人間。我們一家人,開的房間是標準間。旅館根據個人的需求來分配房間 計算機來說,他們是用記憶體來記憶計算機計算時候所用到的資料。這些資料時存在記憶體裡的。我們把 100 放到計算機裡面 則在記憶體...
Java變數比較
很多時候我們都需要對兩個變數進行比較,判斷它們是否相等。不用性質的變數的比較方法會有所不同,其比較的含義也不盡相同,本文將討論一下基本資料型別變數 引用變數和物件變數的比較方法和意義。一 primitive基本資料型別比較 用 比較基本資料型別的變數,當變數的值相等時,則認為這兩個變數相等。即使是不...