INF1563 Programmation I


Opérateurs


Les opérateurs servent à former des expressions plus complexes.

Pour chaque opérateur, Java définit


Les opérateurs arithmétiques

OpérateurOpération
+addition
-soustraction
*multiplication
/division
%modulo

Exemple :

public class TestOperateurs  {

  public static void main( String [] args ) {

    int i = 10;
    int j = 3;
    int resultat;
    float f = 10;
    float resultatFloat;
    double d = 10;
    double resultatDouble;

    resultat = i + j;    // Calcule 13
    System.out.println( i + "+" + j + " == " + resultat );

    resultat = i - j;    // Calcule 7
    System.out.println( i + "-" + j + " == " + resultat );

    resultat = i * j;    // Calcule 30
    System.out.println( i + "*" + j + " == " + resultat );

    resultat = i / j;    // Calcule 3
    System.out.println( i + "/" + j + " == " + resultat );

    resultat = i % j;    // Calcule 1
    System.out.println( i + "%" + j + " == " + resultat );

    resultatFloat = f / j;    // Calcule 3.3333333
    System.out.println( f + "/" + j + " == " + resultatFloat );

    resultatDouble = d / j;    // Calcule 3.3333333333333335
    System.out.println( d + "/" + j + " == " + resultatDouble );

  }

}

Exemple :

int total = 763;           // cents
int dollars = total / 100; // = 7
int cents = total % 100;   // = 63
System.out.println("total = " + dollars + "." + cents + "$"); // "total = 7.63$"

Bonne pratique de la programmation

Le caractère espace autour des opérateurs (sauf + et - unaires).

Exemple :

j = -7 + 2 * (-i)

Priorité (précédence) des opérateurs

  1. unaires +, - (par exemple, -7)
  2. *, /, %
  3. binaires +, -

Les opérateurs numériques ayant la même priorité sont évalués de gauche à droite.

Les parenthèses peuvent être utilisées pour changer l'ordre de l'évaluation.

Exemple :

expressionvaleur
2*6+4/214
8-4*(3-5)16
8/4/2*11

Les expressions mixtes

Les classes Float et Double contiennent deux constantes Float.POSITIVE_INFINITY et Float.NEGATIVE_INFINITY qui représentent le résultat de la division par zéro en virgule flottante.

Exemple :

Soit les déclarations suivantes :
int i = 10;
float f = 1/3;
double d = 1/3.0;
byte b = 100;
short sh = 1000;
long ll = 100;

expressionvaleurtype
i * i100int
i + f10.0float
i + d10.333333333333334double
i * d3.333333333333333double
i / fInfinityfloat
b * b10000int
sh - b900int
ll - b0Llong

Opérateurs arithmétiques et affectation combinés

affectationnotation équivalente
i = i + 3;i += 3;
i = i * 4;i *= 4;
i = i + 1;i += 1;   ou  i++;
i = i - 1;i -= 1;   ou  i--;

Les opérateurs de transtypage ("cast operators")

Le transtypage (ou cast) est la conversion d'une expression d'un certain type en une expression d'un autre type.

Transtypage de données de types primitifs

Transtypage de référence d'objet

Opérateurs relationnels

Les opérateurs relationnels sont des opérateurs qui retournent un résultat de type boolean. Ils évaluent les rapports entre les valeurs des opérandes. Une expression relationnelle renvoie true si le rapport est vrai, false dans le cas opposé.

opérateursignificationdomaine d'application
<plus petit quetypes numériques, caractères
>plus grand quetypes numériques, caractères
<=plus petit que ou égal àtypes numériques, caractères
>=plus grand que ou égal àtypes numériques, caractères
==égalité de valeurs (types primitifs)
égalité de références (types objets)
tous les types de données disponibles dans le langage
!=inégalité de valeurs (types primitifs)
inégalité de références (types objets)
tous les types de données disponibles dans le langage

Les opérateurs sur les chaînes de caractères

Exemples :

Soit la déclaration suivante :
String sigle = "INF1563";

expressionvaleur
sigle.length()7
sigle.substring(3, 7)"1563"
sigle.charAt(0)'I'
sigle.charAt(1)'N'
sigle.toLowerCase()"inf1563"
sigle.isEmpty()false
sigle.compareTo("inf1563")-32
(int)'I'73
(int)'i'105
sigle.substring(3, 7) + sigle.substring(3, 7)15631563
sigle.compareTo("inf1563") < 0true
"INF1563".compareTo("INF1593) < 0true
"INF".compareTo(sigle) < 0true

Méthode equals

La méthode equals appartient à la classe Object et toutes les autres classes en héritent.

Voici sa définition initiale qui compare les références :

public boolean equals(Object obj) {
  return (this == obj) ;
}

equals se comporte exactement comme ==. Dans la plus part des classes la méthode est redéfinie pour qu’elle compare les contenus des objets plutôt que leurs références.

Exemple :

String s1 = "INF1563";
String s2 = "INF1563";
System.out.println(s1 == s2);         // true
System.out.println(s1.equals(s2));    // true

String s3 = "INF";
String s4 = s1.substring(0, 3);       // "INF"
System.out.println(s3 == s4);         // false
System.out.println("INF".equals(s4)); // true

Les opérateurs logiques

Les opérateurs logiques acceptent obligatoirement des opérandes booléennes et calculent un résultat booléen.

opérateursignificationexemplevrai si
&&eta && ba et b sont vrais
||oua || bsoit a soit b est vrai
!non!aa est faux

Une évaluation partielle possible

Quiz

Trouvez les valeurs des expressions ci-dessous :

"INF" + 15 + 63
  1. "INF1563"
  2. "INF78"

!faux || faux
  1. true
  2. false
  3. 0
  4. null

(int)(1.2 + 0.5)
  1. 0
  2. 1
  3. 2
  4. 1.7