java變量的區(qū)別淺析
更新時(shí)間:2013年12月08日 16:59:57 作者:
對(duì)于java的變量天天見(jiàn)到,但有時(shí)候別人問(wèn)起它們的區(qū)別有時(shí)候也說(shuō)不全,所以就找了些資料整理了整理...
類變量也叫靜態(tài)變量,也就是在變量前加了static 的變量;
實(shí)例變量也叫對(duì)象變量,即沒(méi)加static 的變量;
兩者區(qū)別在于:
類變量(靜態(tài)變量)是所有對(duì)象共有,其中一個(gè)對(duì)象將它值改變,其他對(duì)象得到的就是改變后的結(jié)果,并且類變量是可以直接通過(guò)類名來(lái)調(diào)用的 如:A.xingS;
而實(shí)例變量則屬對(duì)象私有,某一個(gè)對(duì)象將其值改變,不影響其他對(duì)象,實(shí)例變量顧名思義是屬于實(shí)例的,所以只能通過(guò)實(shí)例來(lái)調(diào)用 如:A a=new A(); a.name;
舉個(gè)不太恰當(dāng)?shù)睦樱侯愖兞烤秃帽纫粋€(gè)人的姓氏,實(shí)例變量就相當(dāng)于人的名字,如果它父親把姓改了,那它所有的兄弟姐妹姓都得改,但是它們的名字還是各用各的。
例:
public class A{
static int xingS = 0; //類變量
private int name = 0; //實(shí)例變量
String id; //實(shí)例變量
private String colorType; //實(shí)例變量
private int size; //實(shí)例變量
private static String depart; //類變量 f
inal String name="zwm"; //常量
}
public class B{
public void main (String[] args){
A son1= new A();
A son2= new A();
son1.xingS = 3; // 等同于
A.xingS = 3;
son1.name = 4 ;
System.out.println(son2.xingS); //結(jié)果為3
//類變量是針對(duì)所有對(duì)象的,所以son1改變xingS,son2的a也改變
System.out.println(son2.name); //結(jié)果為0
//實(shí)例只改變自身的,所以son1對(duì)象的name改變,不影響對(duì)象son2的name變量
}
}
類變量又叫靜態(tài)成員變量,它不需要?jiǎng)?chuàng)建對(duì)象就可以已經(jīng)在內(nèi)存中存在了,而在創(chuàng)建實(shí)例對(duì)象的時(shí)候,
內(nèi)存中會(huì)為每一個(gè)實(shí)例對(duì)象的每一個(gè)非靜態(tài)成員變量開(kāi)辟一段內(nèi)存空間,用來(lái)存儲(chǔ)這個(gè)對(duì)象所有的非靜態(tài)成員變量值。
即使兩個(gè)不同的實(shí)例對(duì)象是屬于同一個(gè)class類,但是它們的同名非靜態(tài)成員變量在內(nèi)存中占用的空間是不同的,
而靜態(tài)成員變量也就是類變量相同。所有的實(shí)例對(duì)象都共用一個(gè)類變量,內(nèi)存中只有一處空間是放這個(gè)類變量值的。
因此,如果一個(gè)對(duì)象把類變量值改了,另外一個(gè)對(duì)象再取類變量值就是改過(guò)之后的了。
實(shí)例變量也叫對(duì)象變量,即沒(méi)加static 的變量;
兩者區(qū)別在于:
類變量(靜態(tài)變量)是所有對(duì)象共有,其中一個(gè)對(duì)象將它值改變,其他對(duì)象得到的就是改變后的結(jié)果,并且類變量是可以直接通過(guò)類名來(lái)調(diào)用的 如:A.xingS;
而實(shí)例變量則屬對(duì)象私有,某一個(gè)對(duì)象將其值改變,不影響其他對(duì)象,實(shí)例變量顧名思義是屬于實(shí)例的,所以只能通過(guò)實(shí)例來(lái)調(diào)用 如:A a=new A(); a.name;
舉個(gè)不太恰當(dāng)?shù)睦樱侯愖兞烤秃帽纫粋€(gè)人的姓氏,實(shí)例變量就相當(dāng)于人的名字,如果它父親把姓改了,那它所有的兄弟姐妹姓都得改,但是它們的名字還是各用各的。
例:
復(fù)制代碼 代碼如下:
public class A{
static int xingS = 0; //類變量
private int name = 0; //實(shí)例變量
String id; //實(shí)例變量
private String colorType; //實(shí)例變量
private int size; //實(shí)例變量
private static String depart; //類變量 f
inal String name="zwm"; //常量
}
public class B{
public void main (String[] args){
A son1= new A();
A son2= new A();
son1.xingS = 3; // 等同于
A.xingS = 3;
son1.name = 4 ;
System.out.println(son2.xingS); //結(jié)果為3
//類變量是針對(duì)所有對(duì)象的,所以son1改變xingS,son2的a也改變
System.out.println(son2.name); //結(jié)果為0
//實(shí)例只改變自身的,所以son1對(duì)象的name改變,不影響對(duì)象son2的name變量
}
}
類變量又叫靜態(tài)成員變量,它不需要?jiǎng)?chuàng)建對(duì)象就可以已經(jīng)在內(nèi)存中存在了,而在創(chuàng)建實(shí)例對(duì)象的時(shí)候,
內(nèi)存中會(huì)為每一個(gè)實(shí)例對(duì)象的每一個(gè)非靜態(tài)成員變量開(kāi)辟一段內(nèi)存空間,用來(lái)存儲(chǔ)這個(gè)對(duì)象所有的非靜態(tài)成員變量值。
即使兩個(gè)不同的實(shí)例對(duì)象是屬于同一個(gè)class類,但是它們的同名非靜態(tài)成員變量在內(nèi)存中占用的空間是不同的,
而靜態(tài)成員變量也就是類變量相同。所有的實(shí)例對(duì)象都共用一個(gè)類變量,內(nèi)存中只有一處空間是放這個(gè)類變量值的。
因此,如果一個(gè)對(duì)象把類變量值改了,另外一個(gè)對(duì)象再取類變量值就是改過(guò)之后的了。
相關(guān)文章
Java的JSON格式轉(zhuǎn)換庫(kù)GSON的初步使用筆記
GSON是Google開(kāi)發(fā)并在在GitHub上開(kāi)源的Java對(duì)象與JSON互轉(zhuǎn)功能類庫(kù),在Android開(kāi)發(fā)者中也大受歡迎,這里我們就來(lái)看一下Java的JSON格式轉(zhuǎn)換庫(kù)GSON的初步使用筆記:2016-06-06
解析Hibernate + MySQL中文亂碼問(wèn)題
如果持久化的類中有包括了漢字的String對(duì)象,那么對(duì)應(yīng)到數(shù)據(jù)庫(kù)中漢字的部分就會(huì)是亂碼。這主要是由于MySQL數(shù)據(jù)表的字符集與我們當(dāng)前使用的本地字符集不相同造成的2013-07-07
Java的idea連接mongodb數(shù)據(jù)庫(kù)的詳細(xì)教程
這篇文章主要介紹了Java的idea連接mongodb數(shù)據(jù)庫(kù)的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs
這篇文章主要介紹了詳解spring cloud整合Swagger2構(gòu)建RESTful服務(wù)的APIs,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
js+java實(shí)現(xiàn)登錄滑動(dòng)圖片驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了js+java實(shí)現(xiàn)登錄滑動(dòng)圖片驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-03-03
SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析
這篇文章主要介紹了SpringCloud Zuul網(wǎng)關(guān)功能實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03

