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 :
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 undouble
2.5f
est 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 variablea
de typeint
(nombre entier).double b = 2.5;
déclare et initialise une variableb
de 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 variablea
de typeint[]
(tableau d'entiers).- Attention :
a
n'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
a
etb
sont entiers, alors le résultat sera entier 3 / 2
vaut1
car le1.5
est tronqué à l'entier inférieur.- Pour avoir le bon résultat, il faudrait faire
3.0 / 2
par exemple.
- Attention : si
a % b
: reste de la division euclidiennea % 2
donne la parité dea
(0 si pair, 1 si impair)a % b == 0
équivaut à "a
est divisible parb
"
-a
: négation
Logique
a && b
: conjonction (a
ETb
), vrai si les deux sont vraisa || b
: disjonction (a
OUb
), vrai si au moins un des deux est vrai!a
: négation : vrai sia
est 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.