Rappel de Java - la syntaxe

par Tom
le 15/12/2019

Sommaire


Temps de lecture estimé : 45min-1h


Avertissement

Java est sensible à la casse : Truc, truc et TRUC sont trois mots différents.

Le code suivant ne compile pas :

int truc = 5;
System.out.println(Truc);

Identificateurs

= peut être utilisé pour nommer quelque chose (variable, fonction, classe, ...)

Peut contenir des lettres (A-Z, a-z), des chiffres (0-9) et des tirets bas (_) mais ne peut pas commencer par un chiffre.

Casse

Ce n'est pas obligatoire du tout, mais par convention on utilise différentes casses selon la nature de ce qu'on nomme :

  • Classes, interfaces : PremiereLettreEnMajuscule MaSuperClasse
  • Fonctions, méthodes, procédures, variables : premiereLettreDeChaqueMotEnMajusculeSaufAuDebut, uneFonction
  • Constantes : MAJUSCULE, TAILLE_GRILLE

Nombres

Entiers

Type : int

Notation décimale : 1, 41, 123

Notation hexadécimale : 0x1, 0xA0

Flottants

Type : float, double

Se note avec un point : 41.123, 0.123.

Notation scientifique : 3e-8 = $3*10^{-8}$.

Attention : les types float et double ne sont pas interchangeables directement. Les litéraux float doivent se terminer par un f.

Le type double est un surensemble du type float, donc une valeur float peut être utilisée dans un double mais pas l'inverse.

Exemples :

  • 2.5 est un double
  • 2.5f est un float
float x = 2.5;  // ne compile pas
float x = 2.5f; //    compile

double x = 2.5: // compile
double x = 2.5f; // compile aussi

Booléens

Type : boolean

Deux valeurs possibles : true (vrai), false (faux).


Caractères

Type : char

Se note entre guillemets simples: 'A', 'a', ' '.

Caractères spéciaux :

  • '\n' : saut de ligne
  • '\t' : tabulation

Chaînes de caractères

Type : String

Se note entre guillemets doubles : "abc", "Bonjour".

Utilisation possible des caractères spéciaux dans une chaîne :

"Bonjour\nAu revoir"

Donne :

Bonjour
Au revoir

Attention : pour comparer deux chaînes, il faut utiliser .equals() et pas == :

String a = "abc";
String b = "abc";

if (a == b) { // INCORRECT
    ...
}

if (a.equals(b)) { // CORRECT
    ...
}

Commentaires

Un commentaire est un bout de code qui sert à mettre des infos supplémentaires dans le code à destination des humains qui vont le lire.

Les commentaires sont ignorés par le compilateur.

Il en existe 2 types :

  • commentaires sur une ligne : // commentaire
  • commentaires sur plusieurs lignes :
    /* début
    bonjour
    au revoir
    */ fin

Variables

Syntaxe : type nom; ou type nom = valeur;type est le type et nom le nom.

Exemples :

  • int a; déclare une variable a de type int (nombre entier).
  • double b = 2.5; déclare et initialise une variable b de type double (flottant double-précision) avec la valeur 2,5.

Déclarer c'est dire "la variable existe".

Initialiser c'est affecter la valeur à la variable.


Tableaux

On déclare une variable de type tableau en mettant [] après le type.

Exemples :

  • int[] a; déclare une variable a de type int[] (tableau d'entiers).
    • Attention : a n'a pas été initialisé et n'est donc pas encore utilisable.
  • int[] b = new int[15]; cette fois-ci, on déclare bien un tableau d'entiers mais on l'initialise également en définissant sa taille.

On accède à l'élément N (en partant de 0) d'un tableau avec l'opérateur [] :

  • b[5] est le sixième élément de b
  • b[10] = 123; met 123 dans le onzième élément de b

On peut déclarer un tableau à plus d'une dimension en mettant plusieurs [] :

int[][] maMatrice = new int[5][3];

Le code ci-dessus crée une matrice 2D de 5 par 3, où chaque case est un entier. Par défaut, elle est remplie de zéros.


Fonctions

Syntaxe :

type nom(paramètre, paramètre, ...) {
    ...
}

type est le type de retour de la fonction (ce que la fonction renvoie). Si la fonction ne renvoie rien (c'est alors une procédure), on écrit void ; nom est le nom de la fonction, et paramètre = type nom (cf Variables).

Dans une fonction qui renvoie une valeur, on écrit return valeur; pour renvoyer une valeur. Cette valeur peut être un litéral (un nombre, une chaîne), une variable, ou un appel à une autre fonction.

Dans une fonction ne renvoyant pas de valeur, on peut écrire return;.

Dans les deux cas, tout code se trouvant après le return ne sera pas exécuté (sauf cas rares, on verra ça plus tard).

Exemple :

int nombreAuCarre(int leNombre) {
    return leNombre * leNombre; // met leNombre au carré et renvoie le résultat

    int b = 123; // incorrect, car il y a un return plus haut donc la ligne ne serait jamais atteinte
}

.
.
.

int resultat = nombreAuCarre(7);
// resultat contient maintenant 49

Autre exemple :

void afficheBonjour() {
    System.out.println("bonjour");
}

Opérateurs

Arithmétique

  • a + b : addition
  • a - b : soustraction
  • a * b : multiplication
  • a / b : division
    • Attention : si a et b sont entiers, alors le résultat sera entier
    • 3 / 2 vaut 1 car le 1.5 est tronqué à l'entier inférieur.
    • Pour avoir le bon résultat, il faudrait faire 3.0 / 2 par exemple.
  • a % b : reste de la division euclidienne
    • a % 2 donne la parité de a (0 si pair, 1 si impair)
    • a % b == 0 équivaut à "a est divisible par b"
  • -a : négation

Logique

  • a && b : conjonction (a ET b), vrai si les deux sont vrais
  • a || b : disjonction (a OU b), vrai si au moins un des deux est vrai
  • !a : négation : vrai si a est faux

Comparaison

  • a == b : égal À NE PAS UTILISER POUR LES CHAÎNES !
  • a != b : différent
  • a > b : strictement supérieur
  • a >= b : supérieur ou égal
  • a < b : strictement inférieur
  • a <= b : inférieur ou égal

Blocs

Voir l'article complet sur les blocs.


Classes

Voir l'article complet sur les classes.