typeprimitifs - 420111aut25/cours420111 GitHub Wiki
En Java, les types de données sont divisés en deux grandes familles :
- 🧱 Les types primitifs (8 types)
- 🧩 Les types références (classes comme
String
,Scanner
, etc.)
Les types primitifs sont les briques de base de tout programme Java. Ils permettent de représenter les informations simples : nombres, caractères, booléens.
En Java (et dans la plupart des langages), il existe plusieurs types de variables — ou "boîtes" — pour deux raisons principales :
Un nombre entier (int
, long
, etc.) et un nombre à virgule (float
, double
) sont encodés différemment en mémoire.
- Par exemple, un
int
ne peut pas stocker de virgule, car son encodage ne prévoit que des nombres entiers. - Un
float
ou undouble
, eux, utilisent un encodage spécial (norme IEEE 754) pour stocker les parties entière et décimale.
👉 Tu ne peux donc pas mettre un nombre à virgule dans une boîte faite pour des entiers — ça reviendrait à mettre de la soupe dans une boîte avec des trous : ça ne marche pas 😄.
Chaque type occupe une taille différente en mémoire (1, 2, 4 ou 8 octets). C’est important car :
- Plus la boîte est grosse, plus elle prend de place 🏋️♂️
- Plus elle est petite, plus tu peux en stocker dans la mémoire 🪶
Imaginons que tu disposes de 128 bits de mémoire.
Voici quelques façons de les remplir :
Combinaison | Total utilisé |
---|---|
2 long (2 × 64 bits) |
128 bits |
1 long (64) + 2 int (2 × 32) |
128 bits |
3 int (3 × 32) + 1 short (16) + 16 boolean (16 × 1) |
128 bits |
Tu choisis donc le type selon :
- 🧠 Ce que tu veux représenter
- 💾 Et l’espace mémoire que tu veux ou peux utiliser
-
Nombres entiers :
-
byte
,short
,int
,long
-
-
Nombres à virgule flottante (Des approximations des Réels ou chiffres à virgules) :
-
float
,double
-
-
Caractères :
-
char
(représente un caractère Unicode sur 16 bits)
-
-
Booléens :
-
boolean
(valeurstrue
oufalse
)
-
Ils servent à stocker des valeurs sans virgule, positives ou négatives. Chaque type utilise un certain nombre d’octets et a une plage de valeurs définie :
Type | Taille (bits / octets) | Valeur minimale | Valeur maximale | Exemple |
---|---|---|---|---|
byte |
8 bits (1 octet) | -128 | 127 | byte b = 10; |
short |
16 bits (2 octets) | -32 768 | 32 767 | short s = 1000; |
int |
32 bits (4 octets) | -2 147 483 648 | 2 147 483 647 | int i = 42; |
long |
64 bits (8 octets) | -9 223 372 036 854 775 808 | 9 223 372 036 854 775 807 | long l = 100L; |
🧠 Il existe des constantes utiles comme Integer.MAX_VALUE
ou Long.MIN_VALUE
pour obtenir ces limites sans les retenir.
Décimal | Binaire (16 bits) | Hexadécimal |
---|---|---|
1 | 00000000 00000001 | 0001 |
2 | 00000000 00000010 | 0002 |
127 | 00000000 01111111 | 007F |
255 | 00000000 11111111 | 00FF |
Ils permettent de représenter des valeurs décimales (≈ des réels), avec une approximation en base 2.
Type | Taille (bits / octets) | Précision | Valeur min / max | Exemple |
---|---|---|---|---|
float |
32 bits (4 octets) | ~7 chiffres significatifs | ±1.4×10⁻⁴⁵ → ±3.4×10³⁸ | float f = 3.14f; |
double |
64 bits (8 octets) | ~15-16 chiffres significatifs | ±4.9×10⁻³²⁴ → ±1.8×10³⁰⁸ | double d = 2.718; |
💡 En Java, les littéraux décimaux sont des double
par défaut. Pour un float
, on ajoute un f
à la fin.
Le type char
représente un seul caractère Unicode (lettre, symbole, emoji, etc.) :
Type | Taille (bits) | Plage Unicode | Exemple |
---|---|---|---|
char |
16 bits | 0 à 65 535 (U+0000 à U+FFFF) | char c = 'A'; |
🎨 Les caractères sont entourés de quotes simples ('A'
) et peuvent contenir aussi des caractères spéciaux ou emojis :
char emoji = '💡';
char lettre = 'f';
Un boolean
est un type logique qui représente vrai ou faux, souvent utilisé dans les conditions :
Type | Valeurs possibles | Exemple |
---|---|---|
boolean |
true ou false
|
boolean actif = false; |
💬 Très utile pour représenter des états binaires : activé/désactivé, visible/caché, connecté/non connecté...
char estPret = true;
char estFini = false;
Catégorie | Types | Rôle principal |
---|---|---|
🧮 Entiers |
byte , short , int , long
|
Stocker des nombres sans virgule |
🌊 Flottants |
float , double
|
Représenter des valeurs décimales |
🔤 Caractères | char |
Représenter un caractère Unicode |
🔘 Booléens | boolean |
Représenter une valeur vraie ou fausse |
🔧 Consigne :
Créer et afficher les variables avec le meilleur type possible
-
Variable contenant l'âge d'une personne (moins de 123)
-
Population du cégep Marie-Victorin (Environ 7 500)
-
Variable comptant la population au Qc (Environ 9 millions)
-
Variable pour calculer le revenu d'un individu normal
-
Nombre de gouttes d'eau dans une piscine (environ 960 000 000 gouttes).
-
Une variable qui se rappelle si le prof était bon ou pas (true?)
-
Note en lettre qu'un étudiant obtient au cours (A)
📝 Exemple attendu à l'écran :
32
7512
8905430
45000.25
960540388
true
A
Réponse
-
byte age = 12;
-
short populationMV = 7512;
-
int populationQC = 8_905_430;
-
float revenu = 45000.25;
-
int nbGoutteEau = 960_540_388 //Un argument pourrait être fait pour utiliser un long en suggérant que la piscine pourrait possiblement être beaucoup plus grande et un long pourrait être plus sécuritaire.
-
boolean leProfEstBon = true;
-
char noteEleve = 'A';
🔧 Consigne :
Créer et afficher les variables avec le meilleur type possible
-
Âge d'un chat domestique (environ 8 ans)
-
Nombre d'étudiants dans une petite école secondaire (environ 420)
-
Nombre d’habitants à Montréal (environ 1.7 million)
-
Salaire annuel d’un développeur junior (~52 000.75 $)
-
Nombre de grains de sable dans un seau (~25 000 000)
-
Une variable indiquant si une lumière est allumée (
false
) -
La lettre de la section d’un cours (par exemple
B
)
📝 Exemple attendu à l'écran :
8
420
1700000
52000.75
25000000
false
B
Réponse
-
byte ageChat = 8;
-
short nbElevesEcole = 420;
-
int populationMontreal = 1_700_000;
-
float salaireAnnuel = 52000.75f;
-
int nbGrainsSable = 25_000_000;
-
boolean lumiereAllumee = false;
-
char sectionCours = 'B';
🔧 Consigne :
Créer et afficher les variables avec le meilleur type primitif possible, dans l’ordre ci-dessous :
- Une lettre qui représente une réponse à un quiz (par exemple
C
) - Est-ce que l’alarme est activée (
true
) ? - Le nombre d'habitants dans un petit village (environ 1 200)
- Âge d'un enfant (environ 5 ans)
- Le revenu annuel d’un dentiste (~98 500.95 $)
- Le nombre d’étoiles visibles à l’œil nu (~6 000)
- Estimation du nombre de cellules dans un corps humain (environ 37 000 000 000 000)
📝 Exemple attendu à l'écran :
C
true
1200
5
98500.95
6000
37000000000000
Réponse
-
char reponseQuiz = 'C';
-
boolean alarmeActivee = true;
-
short populationVillage = 1200;
-
byte ageEnfant = 5;
-
float revenuDentiste = 98500.95f;
-
short nbEtoilesVisibles = 6000;
-
long nbCellulesHumain = 37_000_000_000_000L;
Parfait ! Voici une version complète de tes notes Java enrichies avec la partie sur System.out.printf()
, organisée de manière cohérente avec les autres points (print
, println
, \
etc.). Tu pourras l’utiliser comme fiche de révision ou support de cours :
Le programme affiche un profil utilisateur formaté en console, avec :
- le nom complet,
- l’âge,
- et la ville.
Le tout est affiché de façon alignée, avec une mise en forme propre grâce à printf()
.
Méthode | Description |
---|---|
print() |
Affiche sans retour à la ligne. |
println() |
Affiche et ajoute un retour à la ligne. |
System.out.print("Bonjour ");
System.out.println("le monde !");
🖥️ Sortie :
Bonjour le monde !
Le \
permet d’insérer des caractères spéciaux dans une chaîne.
Séquence | Résultat | Exemple | Résultat Console |
---|---|---|---|
\n |
Saut de ligne | "Bonjour\nSalut" |
Bonjour Salut |
\t |
Tabulation | "Nom\tAge" |
Nom Age |
\" |
Guillemets doubles | "Il a dit : \"ok\"" |
Il a dit : "ok" |
\\ |
Backslash | "C:\\Users\\Nom" |
C:\Users\Nom |
\' |
Apostrophe | '\' |
' |
System.out.printf("""
Nom complet : %s
Âge : %s
Ville : %s
""",
prenom.substring(0, 1).toUpperCase() + prenom.substring(1) + " " + nom.toUpperCase(),
age,
ville.substring(0, 1).toUpperCase() + ville.substring(1));
Élément | Rôle |
---|---|
""" (Text block) |
Permet un texte multiligne propre (Java 15+). |
%s |
Placeholder pour une valeur chaîne (String ou objet). |
prenom.substring(0,1).toUpperCase() |
Met la 1re lettre en majuscule. |
nom.toUpperCase() |
Nom entièrement en majuscule. |
ville.substring(0,1).toUpperCase() |
Ville avec 1re lettre en majuscule. |
🧠 Même si
age
est unint
,%s
fonctionne grâce à l’autoboxing.
Nom complet : Julie MARTIN
Âge : 28
Ville : Paris
Tu peux fixer la largeur de colonnes avec :
System.out.printf("%-15s : %s\n", "Nom", "Alice");
System.out.printf("%-15s : %d\n", "Âge", 30);
🔎 %–15s
→ champ texte aligné à gauche sur 15 caractères.
Commande | Utilité principale |
---|---|
print() |
Affiche sur la même ligne. |
println() |
Affiche puis saute une ligne. |
\ |
Caractère d’échappement pour mise en forme. |
printf() |
Affichage structuré et aligné. |
Souhaites-tu que je t’en fasse une version PDF prête à imprimer, ou une fiche récap en image ?