Sommaire
- La syntaxe (vous êtes ici)
- Les blocs
- Les classes
- Héritage / classes abstraites / interfaces
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 :
PremiereLettreEnMajusculeMaSuperClasse - 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.5est undouble2.5fest unfloat
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; où type est le type et nom le nom.
Exemples :
int a;déclare une variableade typeint(nombre entier).double b = 2.5;déclare et initialise une variablebde typedouble(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 variableade typeint[](tableau d'entiers).- Attention :
an'a pas été initialisé et n'est donc pas encore utilisable.
- Attention :
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 bb[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, ...) {
...
}
Où 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: additiona - b: soustractiona * b: multiplicationa / b: division- Attention : si
aetbsont entiers, alors le résultat sera entier 3 / 2vaut1car le1.5est tronqué à l'entier inférieur.- Pour avoir le bon résultat, il faudrait faire
3.0 / 2par exemple.
- Attention : si
a % b: reste de la division euclidiennea % 2donne la parité dea(0 si pair, 1 si impair)a % b == 0équivaut à "aest divisible parb"
-a: négation
Logique
a && b: conjonction (aETb), vrai si les deux sont vraisa || b: disjonction (aOUb), vrai si au moins un des deux est vrai!a: négation : vrai siaest faux
Comparaison
a == b: égal À NE PAS UTILISER POUR LES CHAÎNES !a != b: différenta > b: strictement supérieura >= b: supérieur ou égala < b: strictement inférieura <= b: inférieur ou égal
Blocs
Voir l'article complet sur les blocs.