本文目錄一覽:
- 1、java中靜態變量和靜態方法的優缺點
- 2、java中靜態變量和靜態方法分別有什麼特點?深圳
- 3、靜態變量的變量特點
- 4、java中靜態變量和靜態方法分別有什麼特點?
- 5、java的靜態類型有什麼特點
java中靜態變量和靜態方法的優缺點
java靜態變量和靜態方法會在程序初始化運行時候就加載到內存。
優點:不需要在進行實例化。靜態變量的值,直接賦新值即可,不需要參數傳遞,之後可以直接進行參數引用即可;靜態方法可以直接通過”類名.方法”的形式進行方法調用。通常方法被多次調用,並且方法中沒有動態方法引用的時候使用比較方便。
缺點:初始化加載到內存,如果後續沒被引用,加大了內存負擔和程序運行負擔,影響程序運行效率(一般很小),並且靜態變量如果多處被引用賦值,很可能導致參數值混亂(如果是不變的值,最後加上final修飾,強制不能修改)。
備註:上面的都是理論知識,實際開發中,根據實際項目需求進行靈活調整即可。
java中靜態變量和靜態方法分別有什麼特點?深圳
靜態變量,是一但java虛擬機載入java代碼時就被負初值的,並且只負一次值,是多個對象共有的值。 靜態方法最點型的就是main方法 main方法是為了讓程序找到入口,因為靜態是最先被編譯的,靜態方法可以用 類名。方法名 直接調用。
靜態變量的變量特點
靜態局部變量屬於靜態存儲方式,它具有以下特點:
(1)靜態局部變量在函數內定義,但不像自動變量那樣,當調用時就存在,退出函數時就消失。靜態局部變量始終存在着,也就是說它的生存期為整個源程序。
(2)靜態局部變量的生存期雖然為整個源程序,但是其作用域仍與自動變量相同,即只能在定義該變量的函數內使用該變量。退出該函數後, 儘管該變量還繼續存在,但不能使用它。
(3)允許對構造類靜態局部量賦初值。若未賦以初值,則由系統自動賦值。數值型變量自動賦初值0,字符型變量賦空字符。
(4)對基本類型的靜態局部變量若在說明時未賦以初值,則系統自動賦予0值。而對自動變量不賦初值,則其值是不定的。 根據靜態局部變量的特點, 可以看出它是一種生存期為整個源文件的量。雖然離開定義它的函數後不能使用,但如再次調用定義它的函數時,它又可繼續使用, 而且保存了前次被調用後留下的值。 因此,當多次調用一個函數且要求在調用之間保留某些變量的值時,可考慮採用靜態局部變量。雖然用全局變量也可以達到上述目的,但全局變量有時會造成意外的副作用,因此仍以採用局部靜態變量為宜。 給讀者一個簡單直白的例子(區別靜態局部變量和動態局部變量): #includestdio.hint fun(int n){ static int f=1; f=f*n; return f;}void main(){ int i; for(i=1;i=5;i++) printf(fun(%d)=%d\n,i,fun(i));}這裡的運行結果是: fun(1)=1fun(2)=2fun(3)=6fun(4)=24fun(5)=120說明f在加了static的類型限制之後,就相當於全局變量,函數調用完了之後,修改過的f的值仍然是有效的(即這個程序相當於求i的階乘了)。而如果不加static的類型限制,那麼,會是什麼結果呢,我們看下面的代碼: #includestdio.hint fun(int n){ int f=1; f = f * n; return f;}void main(){ int i; for(i=1;i=5;i++) printf(fun(%d)=%d\n,i,fun(i));}程序的運行結果是: fun(1)=1fun(2)=2fun(3)=3fun(4)=4fun(5)=5也就是說,這時函數fun中的變量f的生命周期就僅限於fun函數的範圍內了,在main中每次傳入新的參數i,f就會計算1*i的值並返回,而不會像之前那樣不斷的累乘了。
———————————————————————————————————————————————
下面是java例子: public class StaticTest{ static int f=1;//java聲明靜態變量要放到函數外面,結果和c的結果一樣 int fun(int n){ f = f * n; return f; } public static void main(String[] args){ StaticTest st = new StaticTest(); for(int i = 1; i = 5; i++) System.out.println(st.fun(i)); }}—————————————————————————————————————
Module Module1
Public a As Integer 『未賦值的情況下a的值是0
End Module
Public Class Form1
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
a += 1
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
a += 1
MsgBox(a) 』結果是2(0+1+1)因為是a是模塊級靜態全局變量,所以按按鈕3以後,直到關閉程序a的值都會是2
End Sub
End Class
java中靜態變量和靜態方法分別有什麼特點?
靜態變量
可以將靜態變量理解為類變量(與對象無關),而實例變量則屬於一個特定的對象。
靜態變量有兩種情況:
靜態變量是基本數據類型,這種情況下在類的外部不必創建該類的實例就可以直接使用
靜態變量是一個引用。這種情況比較特殊,主要問題是由於靜態變量是一個對象的引用,那麼必須初始化這個對象之後才能將引用指向它。因此如果要把一個引用定義成static的,就必須在定義的時候就對其對象進行初始化。
靜態方法
與類變量不同,方法(靜態方法與實例方法)在內存中只有一份,無論該類有多少個實例,都共用一個方法。
靜態方法與實例方法的不同主要有:
靜態方法可以直接使用,而實例方法必須在類實例化之後通過對象來調用。
在外部調用靜態方法時,可以使用「類名.方法名」或者「對象名.方法名」的形式。實例方法只能使用後面這種方式。
靜態方法只允許訪問靜態成員。而實例方法中可以訪問靜態成員和實例成員。
靜態方法中不能使用this(因為this是與實例相關的)。
java的靜態類型有什麼特點
靜態屬性:隨着類的加載而加載,該屬性不屬於某個對象,屬於整個類
靜態方法:直接使用類名調用,靜態方法里不能訪問非靜態成員變量
靜態類:不能直接創建對象,不可被繼承
原創文章,作者:TJFLX,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/317216.html