Java Language Référence à un membre non statique à partir d'un contexte statique


Exemple

Les variables et méthodes statiques ne font pas partie d'une instance. Il y aura toujours une seule copie de cette variable, quel que soit le nombre d'objets que vous créez pour une classe particulière.

Par exemple, vous pourriez vouloir avoir une liste de constantes immuable, ce serait une bonne idée de la garder statique et de l'initialiser une seule fois dans une méthode statique. Cela vous donnerait un gain de performance significatif si vous créez régulièrement plusieurs instances d'une classe particulière.

De plus, vous pouvez également avoir un bloc statique dans une classe. Vous pouvez l'utiliser pour affecter une valeur par défaut à une variable statique. Ils ne sont exécutés qu'une fois lorsque la classe est chargée en mémoire.

Les variables d'instance, comme le nom l'indique, dépendent d'une instance d'un objet particulier, et vivent pour en satisfaire les caprices. Vous pouvez jouer avec eux pendant un cycle de vie particulier d'un objet.

Tous les champs et méthodes d'une classe utilisée dans une méthode statique de cette classe doivent être statiques ou locaux. Si vous essayez d'utiliser des variables ou des méthodes d'instance (non statiques), votre code ne sera pas compilé.

public class Week {
    static int daysOfTheWeek = 7; // static variable
    int dayOfTheWeek; // instance variable
    
    public static int getDaysLeftInWeek(){
        return Week.daysOfTheWeek-dayOfTheWeek; // this will cause errors
    }

    public int getDaysLeftInWeek(){
        return Week.daysOfTheWeek-dayOfTheWeek; // this is valid
    }

    public static int getDaysLeftInTheWeek(int today){
        return Week.daysOfTheWeek-today; // this is valid
    }
    
}