2012-05-04 22 views

Odpowiedz

7

Nie sądzę, że jest to łatwe pytanie, ponieważ oznacza coś nieco innego w zależności od języka. Gdybym umieścił to w najbardziej ogólnych kategoriach, które będą prawdopodobnie szalenie różne od osoby:

Zmienna statyczna jest zmienną, która jest wspólna dla wszystkich wystąpień klasy.

Metoda statyczna to metoda, która może być wywoływana w klasie i zazwyczaj nie wymaga utworzenia instancji klasy.

Jeszcze raz, gdybym wybrał trzy różne języki, dałbym trzy różne odpowiedzi.

Wikipedia może również pomóc trochę w zdefiniowaniu tych rzeczy.

http://en.wikipedia.org/wiki/Method_(computer_programming) http://en.wikipedia.org/wiki/Static_variable

+0

mówię Javy w szczególności. – WAMoz56

15

W Java static oznacza class methods i klasa zmiennych (a nie na przykład sposoby oraz zmiennych przykład). Te metody i zmienne mogą być dostępne bez obecności instancji.

Porównanie z metodami instancji i zmiennymi instancji: należy uzyskać do nich dostęp za pośrednictwem obiektu. Na przykład, length() działa na obiekcie:

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

Natomiast valueOf nie może pracować na obiekcie; Ponadto tworzy nowy obiekt po nazwie:

String x = String.valueOf(123.45); 

Uwaga jak metody instancji są nazywane przy użyciu <objectName> następnie kropką ., natomiast metody statyczne są dostępne przy użyciu <className> następnie kropką ..

6

Słowo kluczowe "statyczne" może być mylące, ponieważ w języku C, z którego pochodzi, ma wiele znaczeń. Kiedy deklarujesz zmienną w funkcji, oznacza to, że zmienna ma czas życia poza funkcją. Jest to zasadniczo globalny, który jest prywatny dla funkcji. Jeśli zmienna globalna jest statyczna, jest w zasadzie prywatna dla tego pliku źródłowego. W obu przypadkach zmienna ma jedno miejsce w pamięci, podobnie jak globalne. Po prostu kompilator uniemożliwia dostęp do niego poza funkcją lub kompilacją.

Zakładam, że słowo "statyczny" zostało użyte jako położenie zmiennej statycznej nigdy się nie zmienia, w przeciwieństwie do normalnej zmiennej lokalnej, która będzie miała miejsce w pamięci gdzieś na stosie, w zależności od tego, jak wyglądał stos, gdy funkcja została wywołana.

Po utworzeniu C++ to słowo kluczowe zostało ponownie skierowane, aby odwoływać się do właściwości i metod na poziomie klasy. Zakładam, że myślenie było takie, że statyczna metoda lub własność była czymś w rodzaju globalnego, który był prywatny dla klasy. Jeśli myślisz o tym, jak są one ułożone w pamięci, ma to pewien sens, ponieważ nieruchomość statyczna będzie miała jeden adres, tak jak zmienna globalna. Jedyną różnicą jest to, że kompilator nie pozwala na używanie go poza klasą.

Ponieważ Java (i inne języki) mają składnię inspirowaną przez C++, używa się tam również "statycznego" w odniesieniu do metod i właściwości klas. To niefortunne, ponieważ użycie tego słowa kluczowego ma niewiele wspólnego z angielskim znaczeniem.

Ale na ogół jest to sposób na obejrzenie tego. W większości języków, jeśli jest "statyczny", jest tylko jeden z nich w całym programie. Pomyśl o tym jak o jednym, ustalonym adresie pamięci.

1

Zmienna statyczna jest zmienną używaną przez wszystkie instancje klasy, gdzie jak w zmiennych normalnych zmienna jest inicjowana ponownie. Metody statyczne mogą mieć znaczenie wywoływania ich bez nawet tworzenia obiektu.

1

Pokażę przykłady, aby zrozumieć wyraźnie metody statyczne.

Podczas wprowadzania danych z klawiatury java używa klasy skanera

ex; Scanner scn = new Scanner (System.in); int a = scn.nextInt();

Oznacza to, że metoda nextInt() nie jest statyczna.

Metoda statyczna to metoda, którą można jej użyć bez tworzenia instancji klasy.

Spójrz na poniższy przykład:

public class Calculate { 

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


} 

Wykorzystanie metody statycznej.

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

więc nie instancja klasy obliczyć i stosowaną metodą calculatePower który jest statyczny