1 2 3 4
| public void setCouleur(String couleur) {
if ((couleur == COULEUR_JOUEUR_NOIR) || (couleur == COULEUR_JOUEUR_BLANC))
this.couleur = couleur;
} |
attention, au test d'égalité :
- il faut que tu comprennes la différence entre
couleur.equals(COULEUR_JOUEUR_NOIR)
et
couleur==COULEUR_JOUEUR_NOIR
sinon tu risques d'avoir des dysfonctionnement sans comprendre pourquoi
les variables sont typées en java. il y a 2 types de type : les types primitifs et les classes.
quand une variable est de type primitid, elle "contient" directement sa valeur
int est un type primitif, a contient 123.
mais quand une variable est de type classe, la variable contient une référence à l'instance de classe
String est une classe
s ne contient pas "TOTO", mais une référence à une instance de la classe String qui contient une tableau de char qui contient les lettres T, O, T et O.
si tu écris
1 2 3 4 5 6 7 8 9 10 11 12
| public static void main(String[] args) {
String s="TOTO";
String s1=s.substring(0,2);
String s2=s.substring(0,2);
System.out.println("s1 : " + s1);
System.out.println("s2 : " + s2);
System.out.println("s1==s2 : " + (s1==s2));
System.out.println("s1.equals(s2) : " + s1.equals(s2));
} |
tu auras a l'écran :
1 2 3 4
| s1 : TO
s2 : TO
s1==s2 : false
s1.equals(s2) : true |
bien sur ton == marchera tant que tu utiliseras uniquement les constantes pour affecter la valeur de couleur (puisqu'en fait tu utiliseras la même référence à chaque fois pour chacune des deux constantes), mais tu risques à un moment que ton test ne marche pas parce que tu compares à une chaine qui n'est pas la constante de départ
avec des String, à moins d'être sur de ton coup, utilise equals
Partager