java中成員變量和局部變量的區(qū)別
java中成員變量和局部變量的區(qū)別
成員變量和局部變量都是Java中的兩種變量,那么,它們兩者具體上有哪些區(qū)別呢?
一、定義
成員變量:作為類的成員而存在,直接存在于類中。
局部變量:作為方法或語(yǔ)句塊的成員而存在,存在于方法的參數(shù)列表和方法定義中。
局部變量在使用前必須被程序員主動(dòng)的初始化,和此形成對(duì)比,系統(tǒng)中的成員變量則會(huì)被系統(tǒng)提供一個(gè)默認(rèn)的初始值。所以在語(yǔ)法上,類的成員變量能夠定義后直接使用,而局部變量在定義后先要賦初值,然后才能使用。
二、java中成員變量和局部變量的區(qū)別
1.成員變量在類中,局部變量在方法中。
2.聲明成員變量時(shí)可以不初始化(被final修飾且沒(méi)有static的必須顯式賦值),而局部變量必須手動(dòng)初始化。 3.成員變量可以被public,protect,private,static等修飾符修飾,而局部變量不能被控制修飾符及static修飾;兩者都可 以定義成final型。
4.成員變量存儲(chǔ)在堆,局部變量存儲(chǔ)在棧。
5.存在時(shí)間不同。
三、小編舉例
類變量是類中獨(dú)立于方法之外的變量,用static 修飾。
實(shí)例變量也是類中獨(dú)立于方法之外的變量,不過(guò)沒(méi)有static修飾。
局部變量是類的方法中的變量。
看下面的偽代碼說(shuō)明:
public class Variable{
static int allClicks=0;//類變量
String str="hello world";//實(shí)例變量
public void method(){
int i =0;//局部變量
}
}
實(shí)例變量也稱為:“域”,“成員變量”,在實(shí)體類或數(shù)據(jù)類中被稱為“屬性”或“字段”。當(dāng)實(shí)例變量可以改變時(shí),被稱為對(duì)象的狀態(tài)。
final用于常量的聲明,規(guī)范要求常量的變量名是大寫的。
statci 在java 里面用于對(duì)類方法和屬性進(jìn)行修飾,其作用是什么呢?
有兩種情況是non-static無(wú)法做到的,這時(shí)你就要使用statice。
第一種:你希望不論產(chǎn)生了多少個(gè)對(duì)象,或不存在 任何對(duì)象的情形下,那些特定數(shù)據(jù)的存儲(chǔ)空間都只有一份;
第二種:你希望某個(gè)函數(shù)不要和class object綁在一起。即使沒(méi)有產(chǎn)生任何object,外界還是可以調(diào)用其static函數(shù),或是取用其static data。