Java>Static a koi ca peut bien servir
touffe
-
VilainPetitJava Messages postés 1 Statut Membre -
VilainPetitJava Messages postés 1 Statut Membre -
Salut tt le monde!! c assez urgent mais j'ai besoin de savoir (partiel demain) a koi sert
static montype mavariable; et a koi ca peut bien servir aussi dans une optique objet
merci pour vos reponses , elles seront tres apreciee :)
static montype mavariable; et a koi ca peut bien servir aussi dans une optique objet
merci pour vos reponses , elles seront tres apreciee :)
A voir également:
- Java static
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Jeux java itel touche ✓ - Forum Logiciels
- Jeux java itel 5360 - Forum Mobile
9 réponses
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
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
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
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
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 ;)