Programme non compris

Résolu
cs_limalima Messages postés 124 Date d'inscription dimanche 31 août 2008 Statut Membre Dernière intervention 16 décembre 2010 - 17 nov. 2008 à 22:51
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 18 nov. 2008 à 06:23
j'ai un programme dont je n'arrive pas à comprendre le résultat:
class A {
private n;
public A(int nn){
n=nn;}

public int getn(){
return n;}
public void setn(int nn){
n=nn;
}
}

class Util{
public static void incre(A a,int p){
a.setn(a.getn() +p);
}
public static void incre(int n,int p){
n +=p;
}

}

public classe Trans{
public static void main(String [] arg){
A a =new A(2);
int n=2;
system.out.println("valeur de a avant:" +a.getn());
Util.incre(a,5);

system.out.println("valeur de a apres:"+a.getn());
system.out.println("valeur de a avant :"+n);
Util.incre(n,5);
system.out.println("valeur de n apres :"+n);

}
}

le résultat est:
valeur de a avant:2
valeur de a apres:7
valeur de a avant:2
valeur de a apres:2

je n'ai rien compris !!!!!à ce resultat si vous pouvez m'eclairer, merci

2 réponses

Teclis01 Messages postés 1423 Date d'inscription mardi 14 décembre 2004 Statut Membre Dernière intervention 29 décembre 2012 4
17 nov. 2008 à 23:53
ça montre que ça se comporte pas pareil entre objet et type primitif quand on passe par une methode statique sensé faire la même chose.
et que c'est un code sale

Il vaut mieux poser une question et passer pour bête que le rester toute sa vie

 Les geeks n'ont pas une case en moins ils commencent juste à compter à partir de zéro
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
18 nov. 2008 à 06:23
Le but de ce code est, à mon avis, de montrer que seul le n de la classe A est modifié, et non le type primitif n qui est passé par valeur et non par référence.
3
Rejoignez-nous