1、變量的定義:資料類型 變量名 = 值;
2、變量的分類:變量根據在類中定義位置的不同,可以分為兩大類:成員變量和局部變量。
3、成員變量分為類成員變量和執行個體成員變量
3.1 類成員變量:使用static修飾的成員變量
3.2 執行個體成員變量: 沒加static修飾的變量就是執行個體成員變量
注意:在方法當中 不能定義static變量
3.3 成員變量的特點:
3.3.1 成員變量預設是有初始值
3.3.2 變量初始化之後才會在記憶體中開辟存儲空間
3.3.3 成員變量在整個類中都有效.
3.3.4 成員變量,可以先使用後定義
4、局部變量:變量除了成員變量,其他都是局部變量. 局部變量所處的位置1. 方法内部的變量. 2. 方法的參數 3. 代碼塊中的變量
4.1 局部變量的特點:
4.1.1 局部變量沒有預設的初始值,是以必須先初始化才能使用
4.1.2 局部變量隻在它定義的大括号内生效
5、變量的作用域:變量的作用域指的是變量的存在範圍,隻有在這個範圍内,程式代碼才能通路它。當一個變量被定義時,它的作用域就确定了
6、變量的生命周期:變量的生命周期指的是一個變量被建立并配置設定記憶體空間開始,到該變量被銷毀并清除其所占記憶體空間的過程。 作用域不同,生命周期就不一樣;變量根據定義的位置不同,也決定了各自的作用域是不同的. 看變量所在的那對{}
變量 | 變量在代碼中存放位置 | 生命周期開始 | 生命周期結束 | 記憶體位置 |
---|---|---|---|---|
類變量 | 字段,使用static修飾,類中,方法外 | 所在位元組碼加載到JVM時 | 當JVM停止時 | 方法區 |
執行個體變量 | 字段,沒有static修飾,類中,方法外 | 建立所在類對象時 | 當對象被GC回收時 | 堆 |
局部變量 | 方法參數,方法内,代碼塊 | 執行到初始化變量時 | 所在的方法或代碼塊執行結束 | 棧 |
7、變量使用的注意點:
7.1 局部變量定義後,必須顯示初始化後才能使用,因為系統不會為局部變量執行初始化操作。這就意味着,定義局部變量後,系統并未為這個變量配置設定記憶體空間。 直到程式為這個變量指派時,系統才會為局部變量配置設定記憶體,并将初始值儲存到該記憶體中。
7.2 局部變量不屬于任何類或執行個體,是以它總是儲存在其所在方法的棧記憶體中。
7.3 基本資料局部變量:直接把這個變量的值儲存到該變量所對應的記憶體中。 引用資料局部變量:這個變量記憶體中存的是位址,通過該位址引用到該變量實際引用堆裡的的對象。
7.4 棧記憶體中的變量無需系統垃圾回收,其往往随方法或代碼塊的運作結束而結束。