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.

2 réponses

Whismeril
Messages postés
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596
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
16530
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
20 mai 2022
124
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
17336
Date d'inscription
mardi 11 mars 2003
Statut
Modérateur
Dernière intervention
20 mai 2022
596 > 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