static int,static int和static final int的區別

時間 2022-06-17 08:15:05

1樓:mono教育

因為static變數也就是靜態變數,在程式執行過程中被宣告後就會一直儲存在記憶體裡,所以只能宣告一次,第二次再訪問那個函式時,給靜態變數宣告同時賦值的語句就不再執行了,而靜態變數的值始終儲存在記憶體裡,也就是上次改變以後的值。

沒有static修飾的函式中的變數,只在函式被執行時占用記憶體,函式執行完畢後就被銷毀,資料也就不存在了,所以每次都要宣告,值也就不會變。

static int n; //定義靜態全域性變數

改為int n; //定義全域性變數

再次編譯執行程式,細心體會全域性變數和靜態全域性變數的區別。

注意:全域性變數和全域性靜態變數的區別

全域性變數是不顯式用static修飾的全域性變數,全域性變數預設是有外部鏈結性的,作用域是整個工程,在乙個檔案內定義的全域性變數,在另乙個檔案中,通過extern 全域性變數名的宣告,就可以使用全域性變數。

2樓:琴偉博裘豪

原因在static

intk=1;

static

等於全域性量,退出函式func,k

值保留更新後的值

不變。func(3);使k

等於6,退出函式func,k

值保留6不變。

func(5);

進入函式,k

初值為6,不是

1,執行:

6*5*4*3*2*1

得720

static int和static final int的區別

3樓:匿名使用者

1.static變數

按照是否靜態的對類成員變數進行分類可分兩種:一種是被static修飾的變數,叫靜態變數或類變數;另一種是沒有被static修飾的變數,叫例項變數。兩者的區別是:

對於靜態變數在記憶體中只有乙個拷貝(節省記憶體),jvm只為靜態分配一次記憶體,在載入類的過程中完成靜態變數的記憶體分配,可用類名直接訪問(方便),當然也可以通過物件來訪問(但是這是不推薦的)。對於例項變數,沒建立乙個例項,就會為例項變數分配一次記憶體,例項變數可以在記憶體中有多個拷貝,互不影響(靈活)。

2,final變數:

當你在類中定義變數時,在其前面加上final關鍵字,那便是說,這個變數一旦被初始化便不可改變,這裡不可改變的意思對基本型別來說是其值不可變,而對於物件變數來說其引用不可再變。其初始化可以在兩個地方,一是其定義處,也就是說在final變數定義時直接給其賦值,二是在建構函式中。這兩個地方只能選其一,要麼在定義時給值,要麼在建構函式中給值,不能同時既在定義時給了值,又在建構函式中給另外的值。

當函式引數為final型別時,你可以讀取使用該引數,但是無法改變該引數的值。

另外方法中的內部類在用到方法中的參變數時,此參變也必須宣告為final才可使用

3.static final int 一般用於常量定義

4樓:修懷芹

以final 修飾的變數 相當於常量,在程式中是無法修改其值的。

沒有final的變數是可以修改的。

計算機c語言中 static int a=1;什麼意思

5樓:

static 是定義靜態變數用的,在程式執行中他只會被初始化一次

比如程式執行過程中a的值被改變後,又執行到static int a=1,這句,此時這句將不會被執行,a不會第二次被初始化。如果是動態變數,int a=1,此時a便會被重新賦值為1

6樓:風若遠去何人留

表示a是乙個靜態變數

根據它的位置 可以是靜態區域性變數或者靜態全域性變數初始化值為1

在程式整個生命週期內它的空間不會被釋放

7樓:凌熙紫血

就是表示所有的a代表1,比如後面在加個b=2,if(a>)while return a輸出啊

8樓:only某人

a=1可以修改但不可以重新宣告

c語言中static int 和int有什麼區別?

9樓:匿名使用者

一、作用不同

1、static int :加上static關鍵字,這樣宣告的成員就叫做靜態成員,用於定義靜態的int型變數。

2、int:是用於定義整數型別變數的識別符號。二、特點不同

1、static int :存在不依賴與於任何類物件的存在,類的靜態資料成員應該在**中被顯式地初始化

2、int:int占用4位元組,32位元,資料範圍為-2147483648~2147483647[-2^31~2^31-1]。

三、建立方式不同

1、static int :屬於整個類,即使沒有任何物件建立,類的靜態資料成員變數也存在。

2、int:屬於類的乙個具體的物件,只有物件被建立了,普通資料成員才會被分配記憶體。

10樓:匿名使用者

在main裡面的區別不大,其它函式裡面區別很大,static變數能保持上次呼叫後的結果,int在函式返回後就銷毀了,下次呼叫又重新建立。

11樓:留遐思侍醜

int佔乙個機器字長。如果在32位系統中int佔32位,也就是4個位元組如果在16位系統中int佔16位,即2個位元組。short的大小始終為2位元組

j**a中 static int 和 int 的區別

12樓:匿名使用者

乙個是靜態的,乙個不是靜態的。

靜態的int被宣告成了全域性變數

int沒有被宣告成全域性變數

13樓:匿名使用者

區別在於虛擬機器裡面

static int, 只有在第一次裝載的時候才會去初始化,而且早於int 變數所在類;

int a, 只有在new 類變數的時候才能初始化差別2

static int a, ---->可以直接呼叫,也就是classa.a

而int a , 必須完成所在類例項化才能呼叫,也就是必須classa temp = new classa();

temp.a....

14樓:科技程式迷

static是靜態的意思,static int 與int 區別就在於此。

2l說得好像有點不對。

給點資料參考吧。

15樓:

檢視static用法就可以了

在函式體內定義static int一般是什麼用法?

16樓:陳宗權

函式體內定義的靜態區域性變數,它的生命期跟全域性變數相同,在整個程式執行期間一直保留;它的可見性跟區域性變數相同,只有在這個函式內部才能通過這個變數名訪問這個變數。

17樓:小八

把區域性變數當全域性變數使用

18樓:匿名使用者

看看static的詳解,下面有鏈結另外:

在標頭檔案中宣告靜態變數,一般是不可取的。盡量不要這樣做。

但是這種做法不會引起錯誤,因為在標頭檔案中只是變數的宣告,不是定義,當有原始檔引用這個標頭檔案後,相當於把頭檔案中的宣告語句拷貝到原始檔中,這時才是變數的定義。

由於static使得變數只有在定義的檔案中是可見的,所以,每個引用靜態變數標頭檔案的原始檔都有自己獨立的靜態變數,雖然變數名相同,但是不會衝突,

編譯器在編譯時,為每個檔案中的同名靜態變數分配的是不同的位址空間。

19樓:sweet丶奈何

static定義變數的使用:

一、靜態區域性變數:

1、static類內部變數同auto自動變數(即未加 static 宣告的區域性變數)一樣,是某個特定函式的區域性變數,即只能在定義該變數的函式內使用該變數,2者作用域相同;兩者的不同在於:auto自動變數會隨著函式被呼叫和退出而存在和消失,而static類區域性變數不會,它不管其所在的函式是否被呼叫,都將一直存在;不過,儘管該變數還繼續存在,但不能使用它。倘若再次呼叫定義它的函式時,它又可繼續使用,而且儲存了前次被呼叫後留下的值。

換言之,static型別的內部變數是一種只能在某個特定函式中使用,但一直佔據儲存空間的變數。

2、函式體內如果在定義靜態變數的同時進行了初始化,則以後程式不再進行初始化操作(出現在函式內部的基本型別的的靜態變數初始化語句只有在第一次呼叫才執行)。而對自動變數賦初值是在函式呼叫時進行,每呼叫一次函式重新給一次初值,相當於執行一次賦值語句。

3、靜態區域性變數的初始化表示式必須是乙個常量或者常量表示式。即使區域性靜態變數定義時沒有賦初值,系統會自動賦初值0(對數值型變數)或空字元(對字元變數);靜態變數的初始值為0。而對自動變數auto來說,如果不賦初值則它的值將是個不確定的值。

4、當多次呼叫乙個函式且要求在呼叫之間保留某些變數的值時,可考慮採用靜態區域性變數。雖然用全域性變數也可以達到上述目的,但全域性變數有時會造成意外的***,因此仍以採用區域性靜態變數為宜。

注:區域性靜態變數占用記憶體時間較長,並且可讀性差,因此,除非必要,盡量避免使用區域性靜態變數。

二、靜態全域性變數

全域性變數(外部變數)的說明之前再冠以static 就構成了靜態的全域性變數。

全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。

這兩者在儲存方式上並無不同。

這兩者的區別雖在於:

1、非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是有效的。

2、靜態全域性變數則限制了其作用域, 即只在定義該變數的原始檔內有效,在同一源程式的其它原始檔中不能使用它。

由於靜態全域性變數的作用域侷限於乙個原始檔內,只能為該原始檔內的函式公用,因此可以避免在其它原始檔中引起錯誤。

從以上分析可以看出————

把區域性變數改變為靜態變數後是改變了它的儲存方式,即改變了它的生存期。

把全域性變數改變為靜態變數後是改變了它的作用域,限制了它的使用範圍。

因此static這個說明符在不同的地方所起的作用是不同的。應予以注意。

static int i;

20樓:

這個要從你使用的程式語言來說明。就c語言來說,static為靜態變數,系統預設初始值是0,沒有static的變數初始預設值是隨機的。

區和工是什麼成語,帶區和工的成語

異曲同工y q t ng g ng 釋義 異 不同的 曲 曲調 工 工巧 精緻。不同的曲調 卻同樣的美妙。比喻事物的內容或形式雖然不一樣 但卻是同樣的出色。也比喻不同的做法 收到同樣好的效果。也作 同工異曲。語出 唐 韓愈 進學解 子云相如 同工異曲。正音 曲 不能讀作 q 辨形 工 不能寫作 功 ...

威海經區和環翠區是區嗎,威海經區和環翠區是一個區嗎

對,樓上的說的很準確,高區在環翠區西面,經區在環翠區的南面,三個區組成一個拐角的l型。 無玄琴 不是一個區。威海的老城區是環翠區,經濟開發區又稱經區, 環翠區是國家行政區劃的區,經區和高區是國家批准的位於環翠的功能區,屬於環翠。那些所謂環翠 經區 高區並行的,根本是一種通俗說法,不是正確說法。經區與...

replace和replaceAll的區別

荒蕪世界裡 replace的引數是char和charsequence,即可以支援字元的替換,也支援字串的替換 charsequence即字串序列的意思,說白了也就是字串 replaceall的引數是regex,即基於規則表示式的替換,比如,可以通過replaceall d 把一個字串所有的數字字元都...