Bonjour à toutes et à tous !
Je suis en train d'apprendre la programmation avec JAVA et j'ai rencontré quelques difficultés de compréhension.
Pouvez vous m'aider ?
1) A la base dans la méthode "change", je ne l'avais pas défini en tant que "Static". Pourquoi dois je la définir ainsi ?Code PHP:
public class tt {
private static void change(int a, int b) {
a=b;
b=53;
}
public static void main(String[] args) {
int i,j;
i = 6;
j = 7;
change(i,j);
System.out.println(i+" "+j);
}
}
Je sais que qu'une méthode statique est une méthode qui peut être utilisé sans avoir besoin d'instancier un objet (ici, il n'y a pas d'objet car pas de "new" et de constructeur) et je constate que la méthode méthode Main est aussi Static.
Mais je ne comprend pas.
Pour moi, la méthode "change" correspond à une simple fonction qui prend des paramètres, je ne vois pas l'intérêt de la mettre en static.
Est ce que cela veut dire que je dois définir static à chaque méthode qui ne s'applique pas sur un objet ?
2) J'ai une erreur dans ce code.
A priori, je pensais que cela afficherait i=7 et b=53. Il est affiché : i=6 et j=7.
Pourquoi ?
Je ne pense pas que ce soit à cause du private car elles appartiennent à la même classe "tt".
C'est comme si les affectations ne fonctionnaient pas.
3) Mon dernier problème est aussi lié à l'affectation. Le code fonctionne mais cela me parait illogique.
Le résultat est:Code PHP:
public class l {
public static void affiche(double[] t) {
for(int i =0; i<t.length; i++){
System.out.print(t[i]+" ");
}
System.out.println();
}
public static void init(double[] tab) {
tab[0]=2.5;
tab[1]=-1.235;
}
public static void main(String[] args) {
double[] t1,t2;
t1=new double[2];
init(t1);
affiche(t1);
t1[0]=3.14159;
affiche(t1);
init(t1);
t2=new double[2];
t2=t1;
affiche(t2);
t1[0]=3.14159;
affiche(t2);
}
}
La dernière affectation est incohérente, non ?Code PHP:
2.5 -1.235
3.14159 -1.235
2.5 -1.235
3.14159 -1.235
"affiche(t2);" devrait donner: 2.5 -1.235.
t2[0] n'a jamais été affecté à 3.14159, donc il y a t-il une erreur?
Je crois qu'un concept m'échapper, merci de votre aide.
-----