Java et variable static
Fermé
limbergh
Messages postés
658
Date d'inscription
dimanche 8 juillet 2007
Statut
Membre
Dernière intervention
29 juin 2010
-
19 sept. 2008 à 11:39
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 19 sept. 2008 à 12:13
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 19 sept. 2008 à 12:13
A voir également:
- Java et variable static
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
3 réponses
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
19 sept. 2008 à 12:13
19 sept. 2008 à 12:13
Bonjour,
La réponse :
- en gardant le static, ça donne :
nous avons maintenant 1 instances
nous avons maintenant 2 instances
nous avons maintenant 3 instances
nous avons maintenant 4 instances
nous avons maintenant 5 instances
nous avons maintenant 6 instances
nous avons maintenant 7 instances
nous avons maintenant 8 instances
nous avons maintenant 9 instances
nous avons maintenant 10 instances
- en enlevant le static :
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
Et maintenant l'explication :
Le static sur un attribut sert à déclarer des attributs de classe : toutes les instances de cette classe vont partager la même donnée. Ainsi si tu fais :
CountInstances a = new CountInstances();
CountInstances b = new CountInstances();
a.addInstances;
System.out.println(b.getNumInstances());
Ca va t'afficher 1 (alors que tu n'as jamais incrémenté l'attribut de b).
Le mot clé static sur une méthode te permet de l'appeler sans instancier la classe (par exemple int a = CountInstances.getNulInstances();). En fait, toutes les méthodes utilisant un attribut déclaré en static doivent être static.
En enlevant les static, l'attribut devient un attribut d'instance, et donc chaque instance possède sa propre données.
CountInstances a = new CountInstances();
CountInstances b = new CountInstances();
a.addInstances;
System.out.println(b.getNumInstances());
Ca va t'afficher 0 (parce que tu n'as jamais touché à l'attribut de b).
En espérant avoir été clair.
Cordialement,
La réponse :
- en gardant le static, ça donne :
nous avons maintenant 1 instances
nous avons maintenant 2 instances
nous avons maintenant 3 instances
nous avons maintenant 4 instances
nous avons maintenant 5 instances
nous avons maintenant 6 instances
nous avons maintenant 7 instances
nous avons maintenant 8 instances
nous avons maintenant 9 instances
nous avons maintenant 10 instances
- en enlevant le static :
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
nous avons maintenant 1 instances
Et maintenant l'explication :
Le static sur un attribut sert à déclarer des attributs de classe : toutes les instances de cette classe vont partager la même donnée. Ainsi si tu fais :
CountInstances a = new CountInstances();
CountInstances b = new CountInstances();
a.addInstances;
System.out.println(b.getNumInstances());
Ca va t'afficher 1 (alors que tu n'as jamais incrémenté l'attribut de b).
Le mot clé static sur une méthode te permet de l'appeler sans instancier la classe (par exemple int a = CountInstances.getNulInstances();). En fait, toutes les méthodes utilisant un attribut déclaré en static doivent être static.
En enlevant les static, l'attribut devient un attribut d'instance, et donc chaque instance possède sa propre données.
CountInstances a = new CountInstances();
CountInstances b = new CountInstances();
a.addInstances;
System.out.println(b.getNumInstances());
Ca va t'afficher 0 (parce que tu n'as jamais touché à l'attribut de b).
En espérant avoir été clair.
Cordialement,
choubaka
Messages postés
39404
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
21 novembre 2024
2 102
19 sept. 2008 à 12:08
19 sept. 2008 à 12:08
class CountInstances { private int numInstances = 0; private int getNumInstances() { return numInstances; } private void addInstances() { numInstances++; } public static void main (String[] args) { CountInstances x = new CountInstances(); System.out.println("nous commencons avec "+x.getNumInstances()+"instance"); for (int i = 0; i < 10; i++) { x.addInstances(); System.out.println("nous avons maintenant "+ x.getNumInstances()+" instances"); } } }
Normalement ça marche ... Quand tu fais appel à une méthode statique, tu n'es pas tenu d'instancier ta classe.
Par contre, si les méthodes ne sont pas statique, avant de faire quoi que soit, il faut instancier cette classe
choubaka
Messages postés
39404
Date d'inscription
jeudi 4 avril 2002
Statut
Modérateur
Dernière intervention
21 novembre 2024
2 102
19 sept. 2008 à 12:04
19 sept. 2008 à 12:04
Salut
mets nous ton code après la modification des méthodes et des variables en non static ...
quoi que je crois déjà connaître la réponse ..
mets nous ton code après la modification des méthodes et des variables en non static ...
quoi que je crois déjà connaître la réponse ..