Hello,大家好!我是程序員阿飛!今天呢,告訴大家一個好消息以及一個壞消息。好消息是我拿到了第一家公司的offer,壞消息是因爲各種原圖最後拒絕了。總之,希望這家公司以後的發展越來越好吧!好了,進入今天的主題:變量。
1、類變量、成員變量和局部變量
類變量:定義在類中,方法體之外。但是必須有static來修飾變量,靜態成員屬於整個類。可以通過對象名或者類名來調用。
public class Test{
static int i = 0; //類變量
public void print(){
//其他代碼
}
}
成員變量:定義在類中,方法體之外。成員變量在創建對象時實例化,同時可被類中的方法、構造方法或者特定的語句塊訪問。
public calss Test{
int i = 0;//成員變量
public void print(){
//其他代碼
}
}
局部變量:在方法、構造方法以及語句塊中定義的變量,其聲明和初始化在方法中實現,在方法結束後自動銷燬。
public calss Test{
public void print(){
int i = 0;//局部變量
//其他代碼
}
}
成員變量和類變量的區別:
1、兩個變量的生命週期不同
成員變量隨着對象的創建而存在,隨着對象的回收而釋放。
靜態變量隨着類的加載而存在,隨着類的消失而消失。
2、調用方式不同
成員變量只能被對象調用。
靜態變量可以被對象調用,還可以被類名調用。
3、別名不同
成員變量也稱爲實例變量。
靜態變量也稱爲類變量。
4、數據存儲位置不同
成員變量存儲在堆內存的對象中,所以也叫對象的特有數據。
靜態變量數據存儲在方法區(共享數據區)的靜態區,所以也叫對象的共享數據。
參考地址:https://blog.csdn.net/zhaomengszu/article/details/79371070
2、成員變量和方法作用域
同類 | 同包 | 子類 | 其他包 | |
private | √ | |||
default | √ | √ | ||
protected | √ | √ | √ | |
public | √ | √ | √ | √ |