2012-03-09 18 views
6

voglio capire che cosa significa la parola 'statica' fare nel metodo header 'writeNumbers' ?:qual è il significato di "statico" nell'intestazione di un metodo?

public class DisplayClass { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 
     writeNumbers(); 
    } 

    public static void writeNumbers() 
    { 
     int count; 
     for(count=1; count<=20; count++) 
     { 
      System.out.println(count); 
     } 
    } 
} 

risposta

20

Il termine static indica che il metodo è disponibile a livello di Classe e pertanto non richiede che un oggetto venga istanziato prima di essere chiamato.

Perché writeNumbers era stato chiamato da un metodo che si era static si può solo chiamare altri metodi statici, a meno che non crea un'istanza prima un nuovo oggetto di DisplayClass usando qualcosa come:

DisplayClass displayClass = new DisplayClass(); 

solo una volta che questo oggetto è stato sono stati chiamati metodi non statici, ad esempio:

displayClass.nonStaticMethod(); 
2

Dal Oracle Java Tutorial testualmente:

Il linguaggio di programmazione Java supporta i metodi statici, nonché come variabili statiche. I metodi statici, che hanno il modificatore static nelle loro dichiarazioni, devono essere eseguiti con il nome della classe, senza la necessità di creare un'istanza della classe ...

La sua non avrebbe dovuto creare un'istanza di una classe per usa il metodo in questione. Daresti a quel metodo i parametri appropriati e tornerebbe qualcosa di appropriato.

0

Statico indica al compilatore che il metodo non è associato a nessun membro di istanza della classe in cui è stato dichiarato. Cioè, il metodo è associato alla classe piuttosto che a un'istanza della classe.

1

Gli elementi statici appartengono alla classe anziché all'oggetto.

quindi static method appartiene alla classe a cui è possibile accedere direttamente come di seguito.

public class MyClass{ 
public static void display(){ 
} 
.. 
.. 
} 
. 
. 
.. 
MyClass.display(); 
2

Per chiarire la risposta di Crollster, volevo indicare 2 cose.

Primo:

Con livello di classe, che significa che è possibile accedervi digitando "DisplayClass.writeNumbers()", secondo il vostro esempio nella domanda, senza bisogno di usare "nuovi DisplayClass();" .

Secondo:

Con livello di classe, ma significa anche che il codice di base non viene copiato tutte le istanze in modo da ricevere un minor richiesta di memoria.

Problemi correlati