Variable static

Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020 - Modifié le 14 oct. 2020 à 13:01
Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020 - 15 oct. 2020 à 10:26
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.
A voir également:

2 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656
14 oct. 2020 à 13:46
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
1
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 127
14 oct. 2020 à 19:48
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
1
Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020
15 oct. 2020 à 00:27
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.
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 656 > Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020
15 oct. 2020 à 08:12
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
1
Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020 > Devsaki Messages postés 3 Date d'inscription mercredi 14 octobre 2020 Statut Membre Dernière intervention 15 octobre 2020
15 oct. 2020 à 10:26
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.
0
Rejoignez-nous