incrémente de 1 et de l'ajouter à chaque objet créé?
class MyObject {
static int instanceCounter = 0;
static int counter = 0;
MyObject() {
instanceCounter++;
counter = counter + 1;
}
}
Je suis l'aide de la statique ints pour obtenir ce résultat:
Valeur de instanceCounter pour Objet 1: 5
Valeur de instanceCounter pour Monobjet: 5
Valeur du Compteur pour Objet 1: 1
Valeur du Compteur pour Objet 2: 2
Valeur du Compteur pour l'Objet 3: 3
Valeur du Compteur pour Objet 4: 4
Valeur du Compteur pour Objet 5: 5
mais son affichage
Valeur de instanceCounter pour Objet 1: 5
Valeur de instanceCounter pour Monobjet: 5
Valeur du Compteur pour Objet 1: 5
Valeur du Compteur pour Objet 2: 5
Valeur du Compteur pour l'Objet 3: 5
Valeur du Compteur pour Objet 4: 5
Valeur du Compteur pour Objet 5: 5
mon coureur de classe
class RunMyObject {
public static void main(String[] args) {
MyObject Object1 = new MyObject();
MyObject Object2 = new MyObject();
MyObject Object3 = new MyObject();
MyObject Object4 = new MyObject();
MyObject Object5 = new MyObject();
System.out.println(“Value of instanceCounter for Object 1: ” + Object1.instanceCounter);
System.out.println(“Value of instanceCounter for MyObject: ” + MyObject.instanceCounter);
System.out.println(“Value of Counter for Object 1: ” + Object1.counter);
System.out.println(“Value of Counter for Object 2: ” + Object2.counter);
System.out.println(“Value of Counter for Object 3: ” + Object3.counter);
System.out.println(“Value of Counter for Object 4: ” + Object4.counter);
System.out.println(“Value of Counter for Object 5: ” + Object5.counter);
}
}
et si je éliminer l'électricité statique c'est ce qu'il affiche
Valeur de instanceCounter pour Objet 1: 5
Valeur de instanceCounter pour Monobjet: 5
Valeur du Compteur pour Objet 1: 1
Valeur du Compteur pour Objet 2: 1
Valeur du Compteur pour Objet de 3: 1
Valeur du Compteur pour Objet 4: 1
Valeur du Compteur pour Objet 5: 1
OriginalL'auteur Mansoor Akram | 2012-11-17
Vous devez vous connecter pour publier un commentaire.
Depuis instanceCounter est une variable statique, tous les objets partagent la même variable. Puisque vous êtes l'incrémentation de la instanceCounter au cours de chaque construction de l'objet, à la fin de la création de 5 objets, sa valeur est de 5.
Par conséquent, vous obtenez la sortie 5 en tous votre sys aboutissants. C'est le point de statique
MODIFIER
Pour obtenir ce dont vous avez besoin, procédez de la manière suivante:
Raam votre solution a fonctionné merci beaucoup, veuillez expliquer ce que vous avez changé et pourquoi?
J'ai fait face à une variable d'instance. Cela signifie donc que chaque objet a sa propre variable appelé compteur et la valeur stockée dans le contre est spécifique à cet objet. Donc, ce que j'ai fait est d'incrémenter la variable statique, qui est partagée par tous les objets à chaque construction de l'objet, puis attribuez-lui la valeur de la variable d'instance. Lire ce lien pour plus de détails docs.oracle.com/javase/tutorial/java/javaOO/classvars.html
merci beaucoup de votre aide est très appréciée. 🙂
Veuillez accepter la réponse si vous pensez qu'il a aidé.
OriginalL'auteur Raam
Vous devez être confus au sujet de l'utilisation de
static variables
.static class variables
sont créés une fois par classe. Ils sont partagés par toutes les instances de classe où, commenon-static class variables
sont créés pour chaque instance de l'objet.Donc, si votre
counter
variable eststatic
il sera créé qu'une seule fois et partagée par toutes les instances de ta classe.Lorsque vous y accédez avec
MyObject.counter
ouobject1.counter
et ainsi de suite, vous accédez à la mêmecounter
variable commestatic
variables peuvent être accessibles avec un nom de classe ainsi qu'avec une variable d'instance.Et si c'est
non-static
et chaque instance(ou l'objet) de votre classe d'avoir sa propre copie decounter
.Ainsi, chacun de vos
Object1
,Object2
et ainsi de suite ont tous leurs proprescounter
variable.Et chacun d'entre eux aura la valeur 1, et ainsi vous obtenez 1 dans la sortie.
Mise à JOUR:
Modifier votre code pour obtenir votre sortie désirée que vous avez mentionné dans un commentaire de l'une des réponses:
voir ma réponse mis à jour et nous espérons qu'il vous aidera.
cela n'a pas fonctionné, Raam la solution a fonctionné. 🙂 mais merci pour toute l'aide.
OriginalL'auteur Abubakkar
Si vous voulez le faire comme cela, vous devez ajouter une autre variable, c'est à dire:
Mais ce n'est pas la seule chose que j'ai changé - j'ai aussi fait instanceCounter non statique, et je cède sa valeur dans le constructeur, et puis j'ai incrémenter le champ statique.
pouvez-vous me dire comment Stocker instancecounter la valeur de l'id, mon monsieur m'a dit de cette façon, je peux le compteur d'affichage de la valeur 1,2,3,4,5..... à chaque objet créé et le nombre total de compteur instance?
le résultat est toujours le même 5,5,5,5,5.... pour tous les objets créés. mais maintenant instance compteur a 0.
OriginalL'auteur Daniel Cisek