Les instructions conditionnelles permettent de poser une condition avant d'exécuter un bloc d'instructions.

L'instruction conditionnelle la plus répandue dans les scripts demeure la fameuse structure if.

if (condition_booleenne){
  // bloc d'instructions...
}
if (y != 0)
  System.out.println("x / y = " + x / y);

La condition de l'instruction if doit toujours retourner un type booléen.

if (y)
  // y n'étant pas booléen, la condition est erronée
  System.out.println("x / y = " + x / y);

if (y != 0)
  // y étant pas booléen, la condition est correcte
  System.out.println("x / y = " + x / y);

Lorsque la commande if ne comporte qu'une seule instruction dans son bloc, alors les accolades deviennent facultatives.

L'instruction if peut être accompagnée de else, voire d'une combinaison else if afin de formuler une alternative par défaut (sinon) ou une ou plusieurs conditions différentes (sinon si).

if (Première_condition){
  // Premier bloc d'instructions...
}
else if(Seconde_condition){
  // Second bloc d'instructions...
}
...
else if(Nième_condition){
  //Nième bloc d'instructions...
}
else{
  //bloc d'instructions par défaut...
}

if (journee == "matin")
  System.out.println("C'est le matin !");
else if (journee == "après-midi")
  System.out.println("C'est l'après-midi !");
else if (journee == "soirée")
  System.out.println("C'est la soirée !");
else
  System.out.println("C'est la nuit !");

Cette structure conditionnelle fonctionne de la façon suivante en sachant que si une condition est vraie, le bloc d'instructions correspondant est exécuté puis la sortie de la structure complète est opérée :

  • Si la variable est égale à matin, alors est affiché C'est le matin !,
  • sinon si journee est égal à après-midi,
  • alors sera affiché C'est l'après-midi !,
  • sinon si journee est égal à soirée, alors sera affiché C'est la soirée !,
  • sinon sera affiché C'est la nuit !.

Une structure conditionnelle if...else if...else peut être remplacée par une instruction switch dont le fonctionnement est sensiblement similaire et en outre la syntaxe est bien plus compacte.

Toutefois, une instruction switch n'accepte dans ses différents cas (case) que des valeurs entières (int, short, byte) et des caractères (char), les autres (long, float, double, boolean, Object) n'étant pas autorisés.

switch (variable){
  case valeur_1:
  //Premier bloc d'instructions...
  break;
  case valeur_2:
  //Second bloc d'instructions...
  break;
  ...
  case valeur_N:
  //Nième bloc d'instructions...
  break;
  default:
  //bloc d'instructions par défaut...
  break;
}

switch (int heure)
{
  case 6:
  System.out.println("C'est le matin !");
  Break;
  ...
  case 14:
  System.out.println("C'est l'après-midi !");
  Break;
  ...
  case 21:
  System.out.println("C'est la soirée !");
  Break;
  ...
  default:
  System.out.println("C'est la nuit !");
  Break;
}

La variable entière heure est comparée successivement à chacune des valeurs explicitée par l'instruction case. Si la comparaison est bonne, le bloc d'instructions correspondant est exécuté.
L'instruction break est nécessaire afin de quitter la structure conditionnelle immédiatement après que la condition adéquate eut été trouvée. Dans le cas contraire, les autres instructions case seraient également évaluées.
Par ailleurs, correspondant à else, l'instruction default fournit une alternative par défaut à switch.

L'instruction ternaire offre une structure plus compacte sous réserve de ne proposer que deux possiblités selon une condition spécifiée.

resultat = condition ? première_alternative : seconde_alternative;

Si la condition est vraie alors la première alternative est retournée, sinon c'est la seconde.