pour quant on écrit
les deux objet aurons la même valeur c'est 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 objet1.set("1"); objet2=objet1; objet1.set("2");
pour quant on écrit
les deux objet aurons la même valeur c'est 2
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 objet1.set("1"); objet2=objet1; objet1.set("2");
Bonjour,
Je vais tenter de décrypter ta question, vu qu'il n y en a pas.
2 choses:
-> objet2 = objet1 ne créer pas un 'lien' entre tes 2 objets, les modifications futures sur objet1 n'affecteront pas objet2.
Meilleur exemple:
-> objet2 = objet1 ne changera pas les attributs de objet2 en fonction de objet1, soit tu les 'set' un par un, soit tu clone objet1 (à prendre avec des pincettes).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 int a; int b; a = 1; b = a; a = 2; // au final, a vaut 2 et b vaut toujours 1, c'est à dire la valeur de a au moment ou tu l'a affecté à b.
Bon alors j'ai lu ton message sur un autre post et j'ai mieux compris ta question.
Donc si ils valent 2 tout les deux, c'est parce que lorsque tu fait objet2 = objet1, tu passes l'adresse de objet1 dans l'adresse de objet2.
Ils référencent donc le même objet, c'est à dire objet1.
je vais essayer de reformuler ma question plus clairement
j'ai la class suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public class MyObjet { String value; void set(String val){ this.value=val; } }
et j'ai le programme main suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 public class stribe { public static void main(String[] args) { MyObjet objet1= new MyObjet(); MyObjet objet2= new MyObjet(); objet1.set("1"); objet2=objet1; objet1.set("2"); System.out.println (objet1.value+"*"+objet2.value); } }
et quant j'exécute j'ai le résultat suivant 2*2 et je me demande pourquoi ?
Merci beaucoup
tu viens de me sauver la vie.
autre question, j'en profite je sais que j'abuse un peu.
on m'a demander d'expliquer ce ce que cette class fait
Son code source n'est pas disponible.
Expliquer ce que l'action effectuée par cette classe quand il est exécuté.
.class public Mystery
.super java/lang/Object
; default constructor
.method public ();
; push the reference to the current object on the stack
aload_0
; call linked statically to constructors of the base class
invokespecial java/lang/Object/()V
return
.end method
.method public static main([java/lang/String;)V
.limit stack 2
getstatic java/lang/System/out Ljava/io/PrintStream
ldc "abcdefgh"
invokevirtual java/io/PrintStream/println(Ljava.lang.String;)V
return
.end method
Elle est plutôt bizarre ta classe, il manque pas des bouts?
Je te propose d'utiliser les balises codes à ta disposition et de mettre un peu en forme ce bout de code.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager