2012-05-04 174 views

回答

7

我不認爲這是一個容易回答的問題,因爲它意味着基於語言的稍微不同。如果我把它放在最一般的條款中,可能會因人而異:

靜態變量是在類的所有實例之間共享的變量。

靜態方法是一種可以在類上調用的方法,通常不需要實例化該類。

再次,如果我要選擇三種不同的語言,我會給出三種不同的答案。

維基百科也許可以幫助一些人來定義這些東西。

http://en.wikipedia.org/wiki/Method_(computer_programminghttp://en.wikipedia.org/wiki/Static_variable

+0

我談論的Java尤其如此。 – WAMoz56

15

在Java中,static表示class methods和類變量(與實例方法和實例變量)。這些方法和變量可以在沒有實例存在的情況下訪問。

將此與實例方法和實例變量進行對比:它們必須通過對象進行訪問。例如,length()操作的對象上:

String a = "hello"; 
int len = a.length(); 

相反,valueOf不能在對象上操作;此外,將創建一個名爲當一個新的對象:

String x = String.valueOf(123.45); 

注意實例方法是如何使用<objectName>後跟一個點.調用,而使用<className>後面跟着一個點.訪問靜態方法。

6

'靜態'關鍵字可能會令人困惑,因爲在C源代碼中它有多重含義。當用於在函數中聲明一個變量時,這意味着該變量的生命週期不在函數中。它本質上是一個全球性的功能。如果全局變量是靜態的,那麼它對於該源文件來說基本上是私有的。在這兩種情況下,變量都具有單個內存位置,就像全局一樣。只是編譯器阻止您在函數或編譯單元之外訪問它。

我認爲靜態變量的位置永遠不會改變,而不是一個正常的局部變量,它會在棧上的某個地方有一個內存位置,這取決於當堆棧看起來像什麼時該函數被調用。

當創建C++時,該關鍵字被重新用於引用類級別的屬性和方法。我認爲,這個想法是,一種靜態的方法或者財產是一種對於這個階級來說是私人的全球性的東西。如果你考慮如何在內存中佈置這些內容,它會產生某種意義,因爲靜態屬性將像全局變量一樣具有單個地址。唯一的區別是編譯器不允許你在課堂外使用它。

由於Java(和其它語言)已通過語法C++,啓發使用「靜態」來指代類方法和屬性用於那裏。這很不幸,因爲使用這個關鍵字與英文含義沒有多大關係。

但總的來說,這是看待它的方式。在大多數語言中,如果它是「靜態」,整個程序中只有其中一個。把它看成是一個固定的內存地址。

1

靜態變量是由其中在正常變量該變量被初始化再一類的所有實例中使用的變量。 靜態方法可以在不創建對象的情況下調用它們。

1

我將展示的例子清楚地瞭解靜態方法。

當從鍵盤輸入數據時使用掃描儀類

ex; Scanner scn =新掃描儀(System.in); int a = scn.nextInt();

因此,這意味着nextInt()方法也不是一成不變的。

靜態方法是,它可以在沒有實例化一個類使用的方法。

請看下面的例子:靜態方法

public class Calculate { 

    static void calculatePower(int num, int pow) { 
     System.out.println(Math.pow(num, pow)); 
    } 


} 

用法。

public static void main(String[] args) { 
    Calculate.calculatePower(2,8); 
} 

,所以我們沒有實例化的計算類和使用方法calculatePower是靜態的