JAVA SE之成員變量和局部變量
一.成員變量
在類中定義,用來描述對象將要有什麼。
誰可以使用?
- 本類的方法
- 其他和本類有關係的類使用
二.局部變量
在類的方法中定義,在方法中臨時保存數據。
誰可以使用?
- 只能在當前方法使用
三.成員變量和局部變量區別
1.作用域不同(指變量的作用範圍)
- 局部變量的作用域僅限於定義它的方法
- 成員變量的作用域在整個內部都是可見的
2.初始值不同
- Java會給成員變量一個初始值
- Java不會給局部變量賦予初始值
3.方法名
- 在同一個方法中,不允許有同名局部變量
- 在不同方法中,可以有同名局部變量
- 兩類變量同名時候,局部變量具有更高的優先級(就近原則)
總結:
- 從語法形式上看:成員變量是屬於類的,而局部變量是在方法中定義的變量或是方法的參數;成員變量可以被 public,private,static 等修飾符所修飾,而局部變量不能被訪問控制修飾符及 static 所修飾;但是,成員變量和局部變量都能被 final 所修飾。
- 從變量在內存中的存儲方式來看:如果成員變量是使用
static
修飾的,那麼這個成員變量是屬於類的,如果沒有使用static
修飾,這個成員變量是屬於實例的。而對象存在於堆內存,局部變量則存在於棧內存。 - 從變量在內存中的生存時間上看:成員變量是對象的一部分,它隨着對象的創建而存在,而局部變量隨着方法的調用而自動消失。
- 成員變量如果沒有被賦初值:則會自動以類型的默認值而賦值(一種情況例外:被 final 修飾的成員變量也必須顯式地賦值),而局部變量則不會自動賦值。