2012-05-04 11 views

Antwort

7

Ich denke nicht, dass dies eine einfache Frage zu beantworten ist, weil es etwas anders auf der Sprache basiert bedeutet. Wenn ich es in den allgemeinsten Begriffen schreibe, die wahrscheinlich von Mensch zu Mensch stark variieren werden:

Eine statische Variable ist eine Variable, die für alle Instanzen einer Klasse gemeinsam genutzt wird.

Eine statische Methode ist eine Methode, die für eine Klasse aufgerufen werden kann und die Klasse normalerweise nicht instanziiert werden muss.

Wenn ich drei verschiedene Sprachen auswählen würde, würde ich drei verschiedene Antworten geben.

Wikipedia könnte auch ein wenig helfen, diese Dinge zu definieren.

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

+0

Ich spreche über Java insbesondere statisch ist. – WAMoz56

15

In Java, static bezeichnet class methods und Klassenvariablen (wie zum Beispiel Methoden und Instanzvariablen gegen). Auf diese Methoden und Variablen kann zugegriffen werden, ohne dass eine Instanz vorhanden ist.

Vergleichen Sie dies mit Instanzmethoden und Instanzvariablen: Sie müssen über ein Objekt aufgerufen werden. Zum Beispiel arbeitet length() auf einem Objekt:

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

Im Gegensatz dazu valueOf kann nicht auf einem Objekt arbeiten; Außerdem schafft sie ein neues Objekt, wenn sie aufgerufen:

String x = String.valueOf(123.45); 

Hinweis, wie beispielsweise Methoden aufgerufen werden <objectName> gefolgt von einem Punkt unter Verwendung ., während statische Methoden zugegriffen werden <className> durch einen Punkt . gefolgt werden.

6

Das Schlüsselwort "static" kann verwirrend sein, da es in C, wo es entstanden ist, mehrere Bedeutungen hat. Wenn eine Variable in einer Funktion deklariert wird, bedeutet dies, dass die Variable eine Lebensdauer außerhalb der Funktion hat. Es ist im Wesentlichen ein globaler, der für die Funktion privat ist. Wenn eine globale Variable statisch ist, ist sie im Wesentlichen für diese Quelldatei privat. In beiden Fällen hat die Variable einen einzigen Speicherort, genau wie ein globaler. Es ist nur so, dass der Compiler Sie daran hindert, entweder außerhalb der Funktion oder der Kompilierungseinheit darauf zuzugreifen.

Ich nehme an, dass das Wort "static" als Speicherort einer statischen Variable verwendet wurde, ändert sich nie, im Gegensatz zu einer normalen lokalen Variable, die irgendwo auf dem Stack einen Speicherort hat, abhängig davon, wie der Stack wann aussah Die Funktion wurde aufgerufen.

Wenn C++ erstellt wurde, wurde dieses Schlüsselwort erneut verwendet, um auf Eigenschaften und Methoden auf Klassenebene zu verweisen. Ich gehe davon aus, dass eine statische Methode oder Eigenschaft eine Art von Global war, die der Klasse vorbehalten war. Wenn Sie darüber nachdenken, wie diese im Gedächtnis angelegt sind, hat das eine gewisse Bedeutung, da eine statische Eigenschaft eine einzelne Adresse haben wird, genau wie eine globale Variable. Der einzige Unterschied besteht darin, dass Sie der Compiler nicht außerhalb der Klasse verwenden kann.

Da Java (und andere Sprachen) eine von C++ inspirierte Syntax hatte, wird dort auch 'static' verwendet, um auf Klassenmethoden und Eigenschaften zu verweisen. Es ist bedauerlich, weil die Verwendung dieses Keywords wenig mit der englischen Bedeutung zu tun hat.

Aber im Allgemeinen ist das die Art, es zu betrachten. In den meisten Sprachen, wenn es "statisch" ist, gibt es nur eine davon im gesamten Programm. Betrachten Sie es als etwas mit einer einzigen, festen Speicheradresse.

1

statische Variable ist eine Variable, die von allen Instanzen einer Klasse verwendet wird, wobei die Variable wie in normalen Variablen wieder initialisiert wird. Statische Methoden können eine Bedeutung haben, sie aufzurufen, ohne ein Objekt zu erstellen.

1

Ich werde Beispiele zeigen, um statische Methoden klar zu verstehen.

Bei der Dateneingabe von der Tastatur Java Scanner-Klasse verwendet

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

Also bedeutet dies, dass nextInt() -Methode nicht statisch ist.

Statische Methode ist die Methode, die verwendet werden kann, ohne eine Klasse zu instanziieren.

Blick auf das folgende Beispiel:

public class Calculate { 

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


} 

Verwendung von statischen Methode.

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

So haben wir nicht die Klasse berechnen und verwendet calculatePower Methode instanziiert die

Verwandte Themen