成員變量 | 局部變量 | |
類 | 類中方法外 | 方法內或者方法聲明上 |
內存 | 堆內存 | 棧內存 |
生命週期 | 隨着對象的存在而存在,隨着對象的消失而消失 | 隨着方法的調用而存在,隨着方法的調用完畢而消失 |
默認值 | 有默認值安全 |
沒有默認值,必須先定義,賦值,才能使用 |
沒有名字的對象;是對象的一種簡化表示形式(new 對象())this
兩種使用狀況spa
對象調用方法僅僅一次的時候對象
做爲實際參數傳遞生命週期
隱藏對象的屬性和實現細節,僅對外提供公共訪問方式內存
優勢 隱藏實現細節,提供公共的訪問方式ci
提升了代碼的複用性string
提升安全性table
原則class
將不須要對外提供的內容都隱藏起來
把屬性隱藏,提供公共方法對其訪問
構造方法
給對象的數據進行初始化
格式: 方法名與類名相同;沒有返回值類型,連void都沒有;修飾符可爲(pubic、protected、默認、private)
注意事項: 不提供構造方法,系統會給出默認的無參構造方法
提供構造方法,系統將再也不提供默認的無參構造方法
構造方法能夠重載
Demo d = new Demo();
1 加載Demo.class文件進內存
2 在棧內存爲d開闢空間
3 在堆內存爲Demo對象開闢空間
4 對Dmeo的成員變量進行默認初始化
5 對Demo的成員變量進行顯示初始化
6 經過構造方法對成員變量進行賦值
7 初始化完畢,把對象地址賦值給d變量
若是這個變量是用來描述這個類的信息,該變量就應該定義爲成員變量
越小越好,由於能及時的被回收
1 能夠修飾成員變量和成員方法
2 隨着類的加載而加載
3 優先於對象存在
4 被類的全部對象共享
5 能夠經過類名調用
6 存在於方法區的靜態區
注意事項
在靜態方法中時沒有this關鍵字的
靜態方法只能訪問靜態的成員變量和靜態的成員方法
靜態變量 | 成員變量 | |
所屬 | 屬於類,也稱爲類變量,對象的共享數據 | 屬於對象,也稱爲實例變量(對象變量),對象的特有數據 |
內存 | 方法區的靜態區 | 堆 |
生命週期 | 隨着類的加載而加載,隨着類的消失而消失 | 隨着對象的建立而存在,隨着對象的消失而消失 |
調用 | 能夠經過類名調用,也能夠經過對象調用 | 只能經過對象名調用 |
public static void main(Sting[] args){}
public被JVM調用,訪問權限足夠大
static被JVM調用,不用建立對象,直接類名訪問
void 被JVM調用,不須要給JVM返回值
main 一個通用的名稱,不是關鍵字,可是被JVM識別
string[] args 之前用於接收鍵盤錄入的數據
本類 | 同包 | 同包 | 不一樣包 | 不一樣包 | |
子類 | 其它類 | 子類 | 其它類 | ||
private | √ | ||||
默認 | √ | √ | √ | ||
protected | √ | √ | √ | √ | |
public | √ | √ | √ | √ | √ |