java語言基礎之面向對象之變量
---恢復內容開始---
定義變量的語法:
數據類型 變量名=值
-----------------------------------------------------------
變量根據在類中定義位置的不同,分成兩大類:
成員變量:全局變量/字段(Field),不要稱之為屬性(錯誤)。直接定義在類中,方法外面。
1):類成員變量 使用static修飾的字段。
2):實例成員變量 沒有使用static修飾的字段。
局部變量:變量除了成員變量,其他都是局部變量。
1):方法內部的變量。
2):方法的形參。
3):代碼塊中的變量,一對{}。
class ABC { String info=null;//成員變量 void doWork(String name) { int age;//局部變量 } }
-----------------------------------------
變量的初始值:初始化才會在內存中開辟空間。
成員變量:默認是有初始值的。
局部變量:沒有初始值,,所以必須先初始化才能使用。
-------------------------------------------
變量的作用域:
變量根據定義的位置不同,也決定了各自的作用域是不同的。
成員變量:在整個類中都有效
局部變量:從開始定義的位置開始,到緊跟著結束的花括號為止
--------------------------------------------
成員變量,可以先使用後定義,局部變量必須先定義而後才能使用。
---------------------------------------------
存在位置 | 生命周期開始 | 生命周期結束 | 在內存中的位置 | |
類變量 | 字段,使用static修飾 | 為所在字節碼被加載進JVM | 當JVM停止 | 方法區 |
實例(成 員)變量 | 字段,沒有使用static修飾 | 當創建所在類的對象的時候 | 當該對象被GC回收 | 堆 |
局部變量 | 方法形參,代碼塊中,方法內 | 當代碼執行到初始化變量的時候 | 所在的方法/代碼塊結束 |
什麽時候使用成員變量和局部變量:
1):考慮變量的生存時間,這會影響內存開銷。
2):擴大變量作用域,不利於提高程序的高內聚。
開發中應該盡量縮小變量的使用範圍,如此在內存中停留時間越短,性能也就越高。
不要動不動就使用static修飾,定義工具方法時static方法需要訪問的變量,該變量屬於類,此時才使用static修飾字段。
也不要動不動就使用成員變量,因為存在著線程不安全的問題,能使用局部變量盡量使用局部變量。
---恢復內容結束---
java語言基礎之面向對象之變量