Java>Static a koi ca peut bien servir
Fermé
touffe
-
7 janv. 2004 à 19:11
VilainPetitJava Messages postés 1 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 6 mai 2013 - 6 mai 2013 à 06:36
VilainPetitJava Messages postés 1 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 6 mai 2013 - 6 mai 2013 à 06:36
A voir également:
- Java>Static a koi ca peut bien servir
- Je suis content que tu vas bien ou que tu ailles bien ✓ - Forum Loisirs / Divertissements
- Jeux java itel ✓ - Forum Jeux vidéo
- Java runtime - Télécharger - Langages
- A java exception has occurred ✓ - Forum minecraft
- Java apk - Télécharger - Langages
9 réponses
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
7 janv. 2004 à 20:19
7 janv. 2004 à 20:19
salut, declarer une variable static (ou meme une fct) signifie que ce membre n'est pas specifiq a un objet mais a la classe, tous les objets de la classe partagent cette meme variable. Et de ce fait tu peux y acceder ainsi : Maclasse.MonVarStatic
ex:
class UneClasse {
public static int counter = 0;
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
println (UneClasse.counter); // affiche 1
deu.counter++ ;
println (un.counter); // affiche 2
}
}
Voila, j'espere t'avoir eclairci.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
ex:
class UneClasse {
public static int counter = 0;
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
println (UneClasse.counter); // affiche 1
deu.counter++ ;
println (un.counter); // affiche 2
}
}
Voila, j'espere t'avoir eclairci.
tafiscobar "lou waye def bopame"
la nullite n'existe pas, l'ignorance oui, ah je suppose!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
class UneClasse {
public static int counter = 0; // le counter = 0
}
---------------------------------------------
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
System.out.println (un.counter); // ici le counter = 1
deu.counter++ ;
System.out.println (deu.counter); // ici puisque en a la constante et defenie comme static elle va prend le nouveau modification signifie counter = 1 pas zeros et si le counter n'est pas defenie static counter=1 puisque il reste toujour zeros donc dans ce cas le counter = 2;
}
}
juste une petite modification merci de votre bon reponse
public static int counter = 0; // le counter = 0
}
---------------------------------------------
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
System.out.println (un.counter); // ici le counter = 1
deu.counter++ ;
System.out.println (deu.counter); // ici puisque en a la constante et defenie comme static elle va prend le nouveau modification signifie counter = 1 pas zeros et si le counter n'est pas defenie static counter=1 puisque il reste toujour zeros donc dans ce cas le counter = 2;
}
}
juste une petite modification merci de votre bon reponse
lindap
Messages postés
60
Date d'inscription
lundi 8 février 2010
Statut
Membre
Dernière intervention
31 mai 2011
1
10 déc. 2010 à 22:50
10 déc. 2010 à 22:50
class UneClasse {
public static int counter = 0; // le counter = 0
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
UneClasse.counter++;
System.out.println (UneClasse.counter); // counter = 1
UneClasse.counter++ ;
System.out.println (UneClasse.counter); // counter = 2
}
}
Résultat d'exécution:
1
2
public static int counter = 0; // le counter = 0
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
UneClasse.counter++;
System.out.println (UneClasse.counter); // counter = 1
UneClasse.counter++ ;
System.out.println (UneClasse.counter); // counter = 2
}
}
Résultat d'exécution:
1
2
VilainPetitJava
Messages postés
1
Date d'inscription
lundi 6 mai 2013
Statut
Membre
Dernière intervention
6 mai 2013
6 mai 2013 à 06:36
6 mai 2013 à 06:36
Je viens de tomber sur ce vieux post et je propose mon explication ci-dessous :
public class cours2
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("Au préalable j'ai créé une classe Classe1 dans laquelle j'ai déclaré ceci : public static int counter = 0; ");
Classe1 un = new Classe1 (), deux = new Classe1 ();
System.out.println("test 0 - avant toute modification de counter :"+Classe1.counter);//Affiche 0
Classe1.counter++;
System.out.println("test 1 - incrémentation de counter à partir de instance un, impact sur counter déclarée en Classe1 : "+Classe1.counter);//Donc affiche 1
System.out.println("test 2 - impact sur counter déclarée en instance un : "+un.counter); //Affiche aussi 1 car Classe1 et un partagent la même variable.
System.out.println("test 3 - impact sur counter déclarée en instance deux : "+deux.counter);//Affiche aussi 1 car Classe1, deux et un partagent la même variable.
Classe1.counter++ ;
System.out.println("test 4 - incrémentation de counter à partir de instance deu, impact sur counter déclarée en Classe1 : "+Classe1.counter);//Affiche 2
System.out.println("test 5 - impact sur counter déclarée en instance un : "+un.counter);//Affiche ...2
System.out.println("test 6 - impact sur counter déclarée en instance deux : "+deux.counter);//Affiche un truc de malade : 2
System.out.println("Conclusion : si on déclare une variable static dans une classe, les instances de cette classe partagerons la même valeur. Si on modifie la variable dans une des instances, les autres instances y compris la classe elle-même partageront cette modification.");
System.out.println("Par conséquent il n'y a aucun intérêt dans les instances un et deux à appeler la valeur de counter, il suffit d'appeler Classe1.counter ");
}
}
-----------------------------------------------------------------
- CONSOLE -
-----------------------------------------------------------------
Au préalable j'ai créé une classe Classe1 dans laquelle j'ai déclaré ceci : public static int counter = 0;
test 0 - avant toute modification de counter :0
test 1 - incrémentation de counter à partir de instance un, impact sur counter déclarée en Classe1 : 1
test 2 - impact sur counter déclarée en instance un : 1
test 3 - impact sur counter déclarée en instance deux : 1
test 4 - incrémentation de counter à partir de instance deu, impact sur counter déclarée en Classe1 : 2
test 5 - impact sur counter déclarée en instance un : 2
test 6 - impact sur counter déclarée en instance deux : 2
Conclusion : si on déclare une variable static dans une classe, les instances de cette classe partagerons la même valeur. Si on modifie la variable dans une des instances, les autres instances y compris la classe elle-même partageront cette modification.
Par conséquent il n'y a aucun intérêt dans les instances un et deux à appeler la valeur de counter, il suffit d'appeler Classe1.counter
public class cours2
{
/**
* @param args
*/
public static void main(String[] args)
{
System.out.println("Au préalable j'ai créé une classe Classe1 dans laquelle j'ai déclaré ceci : public static int counter = 0; ");
Classe1 un = new Classe1 (), deux = new Classe1 ();
System.out.println("test 0 - avant toute modification de counter :"+Classe1.counter);//Affiche 0
Classe1.counter++;
System.out.println("test 1 - incrémentation de counter à partir de instance un, impact sur counter déclarée en Classe1 : "+Classe1.counter);//Donc affiche 1
System.out.println("test 2 - impact sur counter déclarée en instance un : "+un.counter); //Affiche aussi 1 car Classe1 et un partagent la même variable.
System.out.println("test 3 - impact sur counter déclarée en instance deux : "+deux.counter);//Affiche aussi 1 car Classe1, deux et un partagent la même variable.
Classe1.counter++ ;
System.out.println("test 4 - incrémentation de counter à partir de instance deu, impact sur counter déclarée en Classe1 : "+Classe1.counter);//Affiche 2
System.out.println("test 5 - impact sur counter déclarée en instance un : "+un.counter);//Affiche ...2
System.out.println("test 6 - impact sur counter déclarée en instance deux : "+deux.counter);//Affiche un truc de malade : 2
System.out.println("Conclusion : si on déclare une variable static dans une classe, les instances de cette classe partagerons la même valeur. Si on modifie la variable dans une des instances, les autres instances y compris la classe elle-même partageront cette modification.");
System.out.println("Par conséquent il n'y a aucun intérêt dans les instances un et deux à appeler la valeur de counter, il suffit d'appeler Classe1.counter ");
}
}
-----------------------------------------------------------------
- CONSOLE -
-----------------------------------------------------------------
Au préalable j'ai créé une classe Classe1 dans laquelle j'ai déclaré ceci : public static int counter = 0;
test 0 - avant toute modification de counter :0
test 1 - incrémentation de counter à partir de instance un, impact sur counter déclarée en Classe1 : 1
test 2 - impact sur counter déclarée en instance un : 1
test 3 - impact sur counter déclarée en instance deux : 1
test 4 - incrémentation de counter à partir de instance deu, impact sur counter déclarée en Classe1 : 2
test 5 - impact sur counter déclarée en instance un : 2
test 6 - impact sur counter déclarée en instance deux : 2
Conclusion : si on déclare une variable static dans une classe, les instances de cette classe partagerons la même valeur. Si on modifie la variable dans une des instances, les autres instances y compris la classe elle-même partageront cette modification.
Par conséquent il n'y a aucun intérêt dans les instances un et deux à appeler la valeur de counter, il suffit d'appeler Classe1.counter
DasSium95
Messages postés
672
Date d'inscription
mardi 30 mars 2010
Statut
Membre
Dernière intervention
13 avril 2016
135
31 mars 2010 à 11:53
31 mars 2010 à 11:53
De toute façon il n'est jamais très bon de partager une ressource. C'est même fortement déconseillé.
Bonjour,
Je veux pas dire mais cet exemple est complètement faux :
class UneClasse {
public static int counter = 0;
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
println (UneClasse.counter); // affiche 1
deu.counter++ ;
println (un.counter); // affiche 2
}
}
Tout ce qui est en gras est invalide, nous ne pouvons appeler la propriété counter que par le nom de sa classe : UneClasse.counter
Je veux pas dire mais cet exemple est complètement faux :
class UneClasse {
public static int counter = 0;
}
class Main {
public static void main (String []args) {
UneClasse un = new UneClasse (), deu = new UneClasse ();
un.counter++;
println (UneClasse.counter); // affiche 1
deu.counter++ ;
println (un.counter); // affiche 2
}
}
Tout ce qui est en gras est invalide, nous ne pouvons appeler la propriété counter que par le nom de sa classe : UneClasse.counter
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
177
22 nov. 2008 à 01:33
22 nov. 2008 à 01:33
Faux. Le fait qu'il soit static dit que c'est une variable de classe. Donc on peut aussi bien faire MaClasse.counter que objet.counter. Il faudrait peut-être que revoir vos cours.
burstedman
>
tafiscobar
Messages postés
1277
Date d'inscription
jeudi 7 décembre 2000
Statut
Contributeur
Dernière intervention
26 février 2009
7 mars 2009 à 01:58
7 mars 2009 à 01:58
Salut,
Je cherche justement à connaître la philosophie Java puisque j'ai un problème bien bizarre.
Soyons clair, la philosophie objet veut que :
-> un membre de classe (introduit par satic) ne peut être atteint que par la classe.
-> un membre d'objet (sans static donc) ne peut être que par un objet.
(nb: ce qui contredit tafiscobar et sur ce point là j'en suis certain)
Seulement voilà, j'ai une classe A et une classe A' Java.
A' hérite de A et A incrémente un compteur static dans son constructeur:
class A
{
private static int count = 0; //membre de la classe A
protected int id; //membre de tout objet de A
public A() { id = ++count; }
}
class A' extends A
{
public A'() { super(); /* censé incrémenter A.count */ }
}
Le problème c que pour tout les objets de A', id = 0 ????!!!!!
C'est comme si chaque objet de A' avait son membre count alors qu'il ne devrait exister qu'en un seul exemplaire dans la définition de la classe A.
Quelqu'un a une idée?
Je cherche justement à connaître la philosophie Java puisque j'ai un problème bien bizarre.
Soyons clair, la philosophie objet veut que :
-> un membre de classe (introduit par satic) ne peut être atteint que par la classe.
-> un membre d'objet (sans static donc) ne peut être que par un objet.
(nb: ce qui contredit tafiscobar et sur ce point là j'en suis certain)
Seulement voilà, j'ai une classe A et une classe A' Java.
A' hérite de A et A incrémente un compteur static dans son constructeur:
class A
{
private static int count = 0; //membre de la classe A
protected int id; //membre de tout objet de A
public A() { id = ++count; }
}
class A' extends A
{
public A'() { super(); /* censé incrémenter A.count */ }
}
Le problème c que pour tout les objets de A', id = 0 ????!!!!!
C'est comme si chaque objet de A' avait son membre count alors qu'il ne devrait exister qu'en un seul exemplaire dans la définition de la classe A.
Quelqu'un a une idée?
Salut,
Vous avez tout à fait raison, sinon c'est quoi la difference entre une variable normale et variable static, en fait avec une variable , on peut lui faire ds une autre classe sans avoir à instancier le classe; ds l'exemple fourni le fait d'avoir declaré la variable n'aucun interet dans ce cas
Ciao, ciao ;)
Vous avez tout à fait raison, sinon c'est quoi la difference entre une variable normale et variable static, en fait avec une variable , on peut lui faire ds une autre classe sans avoir à instancier le classe; ds l'exemple fourni le fait d'avoir declaré la variable n'aucun interet dans ce cas
Ciao, ciao ;)