Académique Documents
Professionnel Documents
Culture Documents
orld {
Introduction
public static
void
System.out.p main(String[] args)
rintln("Hello {
} world");
1
class HelloW
orld {
public static
void
System.out.p main(String[] args)
rintln("Hello {
} world");
001001010100010010010
101010100101001010010
101010101010010010010
101001000101001011000
CAFEBABE00000032001D0A0006000F09 . . . . . . . 2 . . . . . . . .
000010 001000110800120A0013001407001507 . . . . . . . . . . . . . . . .
000020 00160100063C696E69743E0100032829 . . . . . < i n i t > . . . ( )
000030 56010004436F646501000F4C696E654E V . . . C o d e . . . L i n e N
compilateur
000040 756D6265725461626C650100046D6169 u m b e r t a b l e . . . m a i
000050 6E010016285B4C6A6176612F6C616E67 n . . . ( [ L j a v a / l a n g
000060 2F537472696E673B295601000A536F75 / S t r i n g ; ) V . . . S o u
000070 72636546696C6501000F48656C6C6F57 r c e F i l e . . . H e l l o w
000080 6F726C642E6A6176610C000700080700 o r l d . j a v a . . . . . .
000090 170C0018001901000B48656C6C6F2077 . . . . . . . . . H e l l o w
0000A0 6F726C6407001A0C001B001C01000A48 o r l d . . . . . . . . . . . H
0000B0 656C6C6F576F726C640100106A617661 e l l o w o r l d . . . j a v a
0000C0 2F6C616E672F4F626A6563740100106A / l a n g / O b j e c t . . . j
0000D0 6176612F6C616E672F53797374656D01 a v a / l a n g / S y s t e m .
0000E0 00036F75740100154C6A6176612F696F . . o u t . . . L j a v a / i o
0000F0 2F5072696E7453747265616D3B010013 / P r i n t S t r e a m ; . . .
000100 6A6176612F696F2F5072696E74537472 j a v a / i o / P r i n t S t r
000110 65616D0100077072696E746C6E010015 e a m . . . p r i n t l n . . .
000120 284C6A6176612F6C616E672F53747269 ( L j a v a / l a n g / S t r i
000130 6E673B29560021000500060000000000 n g , ) V . ! . . . . . . . . .
class HelloW
orld {
bytecode class HelloW
orld {
public static public static
void void
machine
System.out.p main(String[] args) System.out.p main(String[] args)
rintln("Hello { rintln("Hello {
} world"); } world");
virtuelle
001001010100010010010
101010100101001010010
101010101010010010010
101001000101001011000
2
réfléchir au problème; réfléchir au problème;
concevoir la séquence d'instructions concevoir la séquence d'instructions
? class HelloW
orld {
public static
void
System.out.p main(String[] args)
rintln("Hello {
} world");
Erreurs à l'exécution:
class HelloW
orld {
public static
le programme a été mal conçu class HelloW
orld {
public static
void void
System.out.p main(String[] args) System.out.p main(String[] args)
rintln("Hello { rintln("Hello {
} world");
tester le programme sur la } world");
tester le programme sur la
machine virtuelle machine virtuelle
3
Une variable possède 3 caractéristiques:
• Son identificateur, qui est le nom par lequel la donnée
123
1
Initialisation Initialisation
Une variable non initialisée ne peut être utilisée.
En même temps qu'elle est déclarée, une variable peut être initialisée, c'est-à-
dire lui donner une valeur avant de l'utiliser.
Par exemple:
La ligne: n nCarre
int nCarre;
System.out.println(nCarre);
int n = 4; 4 ?
donne une erreur à la compilation:
déclare donc une variable appelée n et lui donne la valeur 4.
variable nCarre might not have been initialized
System.out.println(nCarre);
4 ? int n = 4;
int n = 4; double x = 1.0; n x
int nCarre;
type pour les valeurs décimales:
la variable x ne peut contenir que 4 1.0
des valeurs décimales
2
Déclaration de variables Déclaration de variables
De façon générale, une déclaration de variable suit le schéma: D'autres exemples de déclaration:
int m = 1;
type identificateur = valeur_initiale; on peut déclarer plusieurs variables
int p = 1, q = 0;
simultanément.
double x = 0.1, y; Ne pas en abuser
ou éventuellement:
N'oubliez pas le point-virgule ; à la fin
type identificateur;
3
Types de variables Affectations
La ligne:
Les principaux types élémentaires sont:
– int, pour les valeurs entières (pour integer, entiers en anglais); nCarre = n * n;
– double, pour les nombres à virgule, par exemple 0.5
est une affectation.
et aussi:
Attention, ce n'est pas une égalité mathématique: Une affectation est
– float: aussi pour les nombres à virgule, moins précises mais occupant une instruction qui permet de changer une valeur à une variable.
moins de mémoire que les doubles;
– char: pour les caractères (A..Z etc.);
– …
Affectations Affectations
L'exécution d’une affectation se décompose en deux temps : L'exécution d’une affectation se décompose en deux temps :
16 nCarre n
16 nCarre n
nCarre = n * n; ? 4 2 nCarre = n * n; ?
16 4
la valeur de l’expression est stockée dans la variable
à gauche du signe =
L’ancienne valeur de nCarre est perdue.
4
Affectations
De façon plus générale, une affectation suit le schéma: Attention: Ne confondez pas une affectation avec une égalité mathématique.
nom_de_variable = expression;
Toutes les deux utilisent le signe égal =, mais l'affectation est un mécanisme
dynamique.
N'oubliez pas le point-virgule ; à la fin
Une expression calcule une valeur, qui doit être de même type que la
Par exemple, les deux instructions:
variable.
Exemples d'expression: copie la valeur de b dans a
a = b;
• 4
b = a; copie la valeur de a dans b
• n * n
• n * (n + 1) + 3 * n – 2
ne sont pas identiques.
Nous reviendrons sur les expressions un peu plus loin.
En mathématiques:
On peut écrire aussi des affectations telles que:
b=a+1
a = a + 1;
signifie que tout au long des calculs, a et b vérifieront toujours cette relation.
Autrement dit, quel que soit a, b sera toujours égal à a+1
Ce type d’affectation, où une variable apparaît de chaque côté du signe =
permet de résoudre de nombreux problèmes.
En Java:
Cette affectation signifie:
a = 5;
« calculer l’expression de a + 1 et ranger le résultat dans a. Cela revient à
b = a + 1; donne à b la valeur de a+1, c’est-à-dire 6. augmenter de 1 la valeur de a »
a = 2; Nous reviendrons sur ce point dans la suite.
donne à a la valeur 2, sans que b ne soit modifiée!
b contient donc toujours 6.
5
Déclaration de constantes
Il peut arriver que la valeur d'une variable ne doive pas changer après
l'initialisation. Dans ce cas, il faut ajouter le mot-clé final devant la déclaration:
Par exemple:
6
Pour écrire à l’écran
affiche la valeur de la variable n
fonction d'affichage
Les variables : sur le terminal
(et non pas la lettre n)
ce qui est entre guillemets On peut aussi afficher la valeur d'une expression: 4
(") est affiché littéralement
System.out.println("Le double de " + n + " est " + 2 * n + ".");
1
Déroulement du programme pas-à-pas n
int n = 4;
int nCarre;
int n = 4;
int nCarre;
4
nCarre = n * n; nCarre = n * n;
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
System.out.println("Le carre de " + n + " est " + nCarre + "."); System.out.println("Le carre de " + n + " est " + nCarre + ".");
System.out.println("Le double de n est " + 2 * n + "."); System.out.println("Le double de n est " + 2 * n + ".");
n nCarre n nCarre
int n = 4;
int nCarre;
4 ? int n = 4;
int nCarre;
4 ?
nCarre = n * n; nCarre = n * n;
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
System.out.println("Le carre de " + n + " est " + nCarre + "."); System.out.println("Le carre de " + n + " est " + nCarre + ".");
System.out.println("Le double de n est " + 2 * n + "."); System.out.println("Le double de n est " + 2 * n + ".");
2
n nCarre n nCarre
int n = 4;
int nCarre;
4 16 int n = 4;
int nCarre;
4 16
nCarre = n * n; nCarre = n * n;
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
System.out.println("Le carre de " + n + " est " + nCarre + "."); System.out.println("Le carre de " + n + " est " + nCarre + ".");
System.out.println("Le double de n est " + 2 * n + "."); System.out.println("Le double de n est " + 2 * n + ".");
n nCarre n nCarre
int n = 4;
int nCarre;
4 16 int n = 4;
int nCarre;
4 16
nCarre = n * n; nCarre = n * n;
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
System.out.println("Le carre de " + n + " est " + nCarre + "."); System.out.println("Le carre de " + n + " est " + nCarre + ".");
System.out.println("Le double de n est " + 2 * n + "."); System.out.println("Le double de n est " + 2 * n + ".");
3
n nCarre Qu’affiche ce programme ?
int a = 2;
int n = 4;
int nCarre;
4 16 int b = 1;
b = a * (b + 2);
nCarre = n * n;
System.out.println(a + ", " + b);
System.out.println("La variable n contient " + n);
System.out.println("Le carre de " + n + " est " + nCarre + ".");
System.out.println("Le double de n est " + 2 * n + ".");
A: a, b
?
Ce qui s'affiche :
La variable n contient 4. B: 1, 2
Le carre de 4 est 16.
Le double de n est 8.
C: 2, 1
▌ D: 2, 6
int a = 2; int a = 2;
int b = 1; int b = 1;
b = a * (b + 2); b = a * (b + 2);
a a b
2 2 1
4
int a = 2; int a = 2;
int b = 1; int b 2=* (1
1;+ 2) = 2 * 3 = 6
b = a * (b + 2); b = a * (b + 2);
a b a b
2 1 2 1
int a = 2; int a = 2;
int b 2=* (1
1;+ 2) = 2 * 3 = 6 int b = 1;
b = a * (b + 2); b = a * (b + 2);
a b a b
2 6 2 6
Affiche:
2, 6
5
Qu’affiche ce programme ?
int a = 5; int a = 5;
int b = a + 3; int b = a + 3;
a = 1; a = 1;
A: 5, 4 a
B: 1,
C: 1,
1
4 ? 5
D: 1, 8
int a = 5; int a = 5;
int b = a + 3; int b = a + 3;
a = 1; 5 + 3 = 8 a = 1;
a b a b
5 8 5 8
6
int a = 5; int a = 5;
int b = a + 3; int b = a + 3;
a = 1; a = 1;
a b a b
1 8 Affiche: 1 8
1, 8
Qu’affiche ce programme ?
int a = 1; int a = 1;
int b = 2; int b = 2;
a = b; a = b;
b = a; b = a;
A: 1, 1
?
a
B: 1, 2
C: 2, 1 1
D: 2, 2
7
int a = 1; int a = 1;
int b = 2; int b = 2;
a = b; a = b;
b = a; b = a;
a b a b
1 2 1 2
int a = 1; int a = 1;
int b = 2; int b = 2;
a = b; a = b;
b = a; b = a;
a b a b
2 2 2 2
8
Supposons qu'on ait déclaré et initialisé deux variables a et b.
int a = 1;
a b int b = 2;
int temp = a;
Affiche:
2, 2 2 2 a = b;
b = temp;
a b a b temp
1 2 1 2 1
int a = 1; int a = 1;
int b = 2; int b = 2;
int temp = a; int temp = a;
a = b; a = b;
b = temp; b = temp;
9
a b temp a b temp
1 2 1 2 2 1
int a = 1; int a = 1;
int b = 2; int b = 2;
int temp = a; int temp = a;
a = b; a = b;
b = temp; b = temp;
a b temp a b temp
2 2 1 2 1 1
int a = 1; int a = 1;
int b = 2; int b = 2;
int temp = a; int temp = a;
a = b; a = b;
b = temp; b = temp;
10
import java.util.Scanner;
11
Déroulement du programme pas-à-pas Déroulement du programme pas-à-pas
Scanner keyb = new Scanner(System.in); Scanner keyb = new Scanner(System.in);
System.out.println("Entrez une valeur pour n"); System.out.println("Entrez une valeur pour n");
int n = keyb.nextInt(); int n = keyb.nextInt();
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
keyb
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
keyb keyb
12
Déroulement du programme pas-à-pas Déroulement du programme pas-à-pas
Scanner keyb = new Scanner(System.in); Scanner keyb = new Scanner(System.in);
System.out.println("Entrez une valeur pour n"); n System.out.println("Entrez une valeur pour n"); n
int n = keyb.nextInt(); int n = keyb.nextInt();
int nCarre = n * n;
2 int nCarre = n * n;
2
System.out.println("La variable n contient " + n); System.out.println("La variable n contient " + n);
4
Ce qui s'affiche: Ce qui s'affiche:
Entrez une valeur pour n Entrez une valeur pour n
2 2
▌ ▌
13
Attention avec nextLine() !
int i = keyb.nextInt();
String s1 = keyb.nextLine();
String s2 = keyb.nextLine();
Si on tape:
25 francs
23 francs
è i contient 25, s1 contient francs, s2 contient 23 francs
Si on tape:
14
euros
43
è i contient 14, s1 est vide, s2 contient euros !
car nextLine() lit ce qui suit 14 jusqu'à la fin de la ligne, c'est-à-dire rien !
14
Expression et Opérateurs
A droite du signe égal dans une affectation se trouve une expression:
Une expression calcule une valeur, qui doit être de même type que la
variable.
1
On dispose aussi des opérateurs += , -= , *= , /= Opérateurs relatifs au type int
Par exemple: Dans le cas des int, il existe aussi:
0 % 4 vaut 0 car 0 = 0 * 4 + 0
1 % 4 vaut 1 car 1 = 0 * 4 + 1
b *= a; 2 % 4 vaut 2 car 2 = 0 * 4 + 2
est équivalent à 3 % 4 vaut 3 car 3 = 0 * 4 + 3
b = b * a; 4 % 4 vaut 0 car 4 = 1 * 4 + 0
5 % 4 vaut 1 car 5 = 1 * 4 + 1
...
2
Affectation d’une valeur entière à La division entière
une variable décimale
En revanche, il est possible d'affecter une valeur de type int à une variable
de type décimale, par exemple double.
Exemple: double x;
l'expression 1 / 2 est d'abord évaluée
int n = 3;
x = 1 / 2; elle vaut 0
double x = 2 * n;
0 la valeur 0 est affectée à x
0.0
3
Fonctions mathématiques
Java fournit les fonction mathématiques usuelles, ainsi que des constantes comme Pi.
Fonctions mathématiques
Ces fonctions et constantes s'utilisent en suivant la notation:
class ExempleMathematique
{
public static void main(String[] args) {
import java.util.Scanner;
class ExempleAngle
{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);