Variable static

Signaler
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020
-
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020
-
Bonjour,
J'aimerais savoir pourquoi ce code donne le résultat indiqué ci-dessous:

Voila le résultat:

Ce que j'aimerais savoir c'est comment le mot static va permettre d'obtenir ce resultat et si le variable bites n'etait pas de type static est ce que on aura le meme resultat?
Je vous remercie.

2 réponses

Messages postés
14935
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 octobre 2020
447
Bonjour

Voici un petit tuto sur la bonne façon de poster un code
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Messages postés
16079
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
28 octobre 2020
102
Bonjour,

Il faut réfléchir à deux niveaux : il y a la classe et il y a les objets.

Un objet est l'instance d'une classe. Chaque attribut défini dans la classe, aura une valeur différente pour chacun des objets de la classe.
Par exemple : si tu as une classe Voiture avec 4 attributs de type Roue, alors chaque objet de la classe Voiture aura 4 valeurs de Roue.

Mais une classe c'est aussi un objet (de type Class) et peut donc aussi avoir des attributs.

Lorsque l'on utilise le mot clé static on fait référence aux attributs définis pour la classe, alors que sans cela on ferait référence aux attributs définis pour chaque objet.

public class Foo {
    int value;
    static int staticValue;
}

Foo foo1 = new Foo();
foo1.value = 1;

Foo foo2 = new Foo();
foo2.value = 2;

System.out.println(foo1.value); // 1
System.out.println(foo2.value); // 2

Foo.staticValue = 42;
System.out.println(Foo.staticValue); // 42
System.out.println(foo1.staticValue); // 42
System.out.println(foo2.staticValue); // 42
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020

D'accord je vous remercie @KX j'ai bien compris votre explication et j'aimerais juste savoir au niveau de mon code pourquoi le resultat est 2 bites et n'est pas 1 bite?
Je vous remercie.
Messages postés
14935
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
28 octobre 2020
447 >
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020

Donc tu n’a pas compris l’explication de KX.

Ajoute un attribut
int autre = 0;


Dans la méthode takebite, tu l’incrémentes aussi et à la fin tu l’affiches pour les 2 objets.

Compare les résultats et relis l’explication de KX
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020
>
Messages postés
3
Date d'inscription
mercredi 14 octobre 2020
Statut
Membre
Dernière intervention
15 octobre 2020

Grace a vos explication et quelques recherches que j'ai fait j'ai compris que:
- la variable statique appartient a la classe et a chaque fois quant on fait l'incrémentation soit dans la classe elle-même au dans des instances de cette classe on va toujours incrémenter la valeur initiale déclaré dans la classe.