Aller au contenu principal

Opérateurs

Opérateurs Arithmétiques

Ces opérateurs permettent d'effectuer des opérations mathématiques.

OpérateurDescriptionExempleRésultat (si a = 10 et b = 3)
+Additiona + b13
-Soustractiona - b7
*Multiplicationa * b30
/Division (entière si les deux opérandes sont des entiers, sinon flottante)a / b3 (division entière), 3.333... (division flottante si a ou b est un double ou float)
%Modulo (reste de la division entière)a % b1
++Incrémentation (préfixe ou postfixe)a++ ou ++a10 (puis 11) ou 11
--Décrémentation (préfixe ou postfixe)a-- ou --a10 (puis 9) ou 9

Différence entre a++ et ++a :

  • a++ (post-incrémentation) : la valeur de a est utilisée avant d'être incrémentée.
  • ++a (pré-incrémentation) : la valeur de a est incrémentée avant d'être utilisée.

Exemple :

int a = 5;
int b = a++; // b prend la valeur 5, puis a devient 6
int c = ++a; // a devient 7, puis c prend la valeur 7

System.out.println("b : " + b); // Affiche 5
System.out.println("c : " + c); // Affiche 7
System.out.println("a : " + a); // Affiche 7

Comparaison avec Python :

Python n'a pas d'opérateurs ++ ou --. Il faut utiliser les opérateurs d'affectation.

# Python
x = 5
x += 1 # Équivalent à x = x + 1
print(x) # Affiche 6

# Pas possible en Python:
# x++ # Erreur de syntaxe

Impact sur la performance :

La pré-incrémentation (++a) est généralement plus efficace que la post-incrémentation (a++) car elle ne crée pas de copie temporaire de la valeur. Cependant, les compilateurs modernes optimisent souvent cette différence.

// Moins efficace (post-incrémentation)
for (int i = 0; i < 1000; i++) { ... }

// Slightly plus efficace (pré-incrémentation)
for (int i = 0; i < 1000; ++i) { ... }

Opérateurs d'Affectation

Ces opérateurs affectent une valeur à une variable.

OpérateurDescriptionExempleÉquivalent à
=Affectation simplea = 10
+=Addition et affectationa += ba = a + b
-=Soustraction et affectationa -= ba = a - b
*=Multiplication et affectationa *= ba = a * b
/=Division et affectationa /= ba = a / b
%=Modulo et affectationa %= ba = a % b

Exemple :

int x = 5;
x += 3; // x vaut maintenant 8 (5 + 3)

3. Opérateurs de Comparaison

Ces opérateurs comparent deux valeurs et renvoient un booléen (true ou false).

OpérateurDescriptionExemple
==Égal àa == b
!=Différent dea != b
>Supérieur àa > b
<Inférieur àa < b
>=Supérieur ou égal àa >= b
<=Inférieur ou égal àa <= b

Exemple :

int age = 20;
boolean estMajeur = age >= 18; // estMajeur vaut true

4. Opérateurs Logiques

Ces opérateurs combinent des expressions booléennes.

OpérateurDescriptionExemple
&&ET logique (AND) : true si les deux opérandes sont truea > 5 && b < 10
``
!NON logique (NOT) : inverse la valeur de l'opérande (true devient false, etc.)!(a > 5)

Exemple :

int x = 5;
int y = 0;

if (y != 0 && x / y > 2) {
System.out.println("Résultat de la division : " + (x / y));
}

if (x > 10 || y++ > 0){
System.out.println("y = " + y);
}

5. Opérateurs Bit à Bit

Ces opérateurs manipulent les bits des opérandes.

OpérateurDescriptionExemple (si a = 5 (0101 en binaire) et b = 3 (0011 en binaire))Résultat
&ET bit à bit : 1 si les deux bits sont 1, sinon 0a & b1 (0001)
|OU bit à bit : 1 si au moins un des bits est 1, sinon 0a | b7 (0111)
^OU exclusif (XOR) bit à bit : 1 si les bits sont différents, 0 s'ils sont identiquesa ^ b6 (0110)
~NON bit à bit (complément à un) : inverse tous les bits~a-6
<<Décalage à gauchea << 110 (1010)
>>Décalage à droite avec conservation du signea >> 12 (0010)
>>>Décalage à droite sans conservation du signea >>> 12 (0010)

6. Opérateur Ternaire

condition ? valeur_si_vrai : valeur_si_faux;

Exemple :

int age = 15;
String statut = (age >= 18) ? "Majeur" : "Mineur";

7. Opérateur instanceof

objet instanceof Classe

Exemple :

String chaine = "Bonjour";
boolean estUneChaine = chaine instanceof String;

Priorité des opérateurs

  1. ++, -- (préfixe)
  2. !, ~, +, - (unaire)
  3. *, /, %
  4. +, -
  5. <<, >>, >>>
  6. <, <=, >, >=, instanceof
  7. ==, !=
  8. &
  9. ^
  10. \|
  11. &&
  12. \|\|
  13. ?:
  14. =, +=, -=, *=, /=, %=, &=, ^=, \|=, <<=, >>=, >>>=