2009-01-16 7 views
-1

en double: What does the 'static' keyword do in a class?Java statique


J'ai lu this post déjà.

Que fait le mot-clé "static" dans une méthode? Je me rappelle avoir été dit que statique! = Collant ... mais c'est à peu près tout ce que je sais sur ce mot-clé.

+1

Ceci est un peu question débutant, mais je pense que cela est un point d'achoppement pour beaucoup de débutant, et il peut, si Quelqu'un a envie de recevoir une réponse très technique qui profiterait aux utilisateurs de Java. +1 –

+0

Voir [Présentation des membres de la classe] (https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) dans les didacticiels Java d'Oracle. – Jesper

Répondre

1

Une méthode statique appartient à la classe dans laquelle elle est définie et pas aux instances d'objets de cette classe, comme le font les méthodes non statiques. Comme un effet secondaire de ne pas appartenir aux instances d'une classe, c'est une erreur de compilation pour essayer d'accéder aux champs non statiques dans une méthode statique. Il n'y a pas de "ceci" pour les méthodes statiques pour obtenir l'accès des champs non-statiques.

La classe Java Math est un bon exemple car elle est chargée avec des méthodes statiques. Vous ne créez jamais une instance de la classe Math, vous appelez simplement des méthodes directement à partir de la classe.

Math.abs(3.14); 
6

Les variables de classe statique peuvent être considérées comme une classe globale. Peu importe le nombre d'instances de la classe, il existe une instance de chaque variable statique.

Les méthodes statiques n'utilisent aucune variable de classe non statique et peuvent être appelées directement depuis l'extérieur de la classe sans avoir à instancier la classe elle-même.

1

La valeur d'une variable statique dans un procédé est stocké entre les appels à cette méthode



public void method() { 
    static int callCount = 0; 
    callCount++; 
    System.out.println("Calls: " + callCount); 
} 

method(); // "Calls: 1" 
method(); // "Calls: 2" 
method(); // "Calls: 3" 

Notez que ce qui est totalement différent d'un procédé statique. Une méthode statique est appelée sur la classe dans laquelle elle est définie au lieu d'une instance de cette classe.



class MyClass { 
    public static void staticMethod() { ... } 
    public void nonStaticMethod(); 
} 

Myclass.staticMethod(); 

MyClass instance = new MyClass(); 
instance.nonStaticMethod(); 

+0

Peut-être que vous souhaitez savoir quelles langues prennent en charge les variables statiques dans les méthodes. Par exemple, il n'est pas (actuellement) supporté en Java. –

1

une méthode statique est celle qui est établie pour la classe . Il n'a pas besoin (et n'a pas) de pointeur this et ne peut pas accéder aux données d'instance. Vous pouvez donc écrire quelque chose ike

public class Hello { 

    void instanceHello() { 
     System,out.println("Hello from the instance."); 
    } 

    public static void main(int argc, String[] argv){ 
     // The main method is defined even though there are no instances 
     System.out.println("Hello from main."); 
     instanceHello(); // but this is a syntax error; 
     Hello h = new Hello(); 
     h.instanceHello(); // this isn't though 
    } 
} 
1

Les variables et méthodes statiques appartiennent à la classe et non à l'instance, bien que vous puissiez les référencer à partir d'une référence d'instance. Habituellement, vous utilisez le nom de la classe pour y accéder.

Si une méthode est déclarée comme statique, vous n'avez pas besoin de l'instance de l'objet dans laquelle elle est définie pour l'appeler. Maintenant, vous voudrez peut-être savoir quand une telle situation pourrait se produire? Considérez la principale méthode de java

public static void main (String [] args)

Pourquoi est-il déclaré statique? C'est parce que pour lancer votre programme, cette méthode devrait commencer à s'exécuter. Et puisque le programme n'a pas été initialisé, vous ne pouvez pas créer une instance de la classe dans laquelle il est déclaré. Par conséquent, vous devez déclarer la classe publique.Et, cette méthode statique est appelée lorsque la classe est chargée en mémoire par

java YourClassName

En outre, les méthodes statiques sont utilisées pour modifier les variables statiques. Ils ne peuvent pas manipuler les variables d'instance non statiques.

En outre, il faut savoir que statique détient un sens différent dans une autre langue comme C.