Vous êtes sur la page 1sur 22

MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE

SCIENTIFIQUE
UNIVERSITÉ DE TUNIS EL MANAR

Programmation JAVA

Préparé par : Dr. Ouerghi Hajer


Email : ouerghi.hajer@isi.utm.tn
Niveau : 2eme Licence en Sciences
de l' Informatique (CS)

Année Universitaire: 2022-2023


Plan du cours

o Introduction
o Les bases du langage Java
o Principes de la Programmation orientée objet
o Héritage et Polymorphisme
o Interfaces et package
o Exceptions

2
MINISTÈRE DE L’ENSEIGNEMENT SUPÉRIEUR ET DE LA RECHERCHE
SCIENTIFIQUE
UNIVERSITÉ DE TUNIS EL MANAR

Chapitre 2: Les bases du langage Java

Préparé par : Dr. Ouerghi Hajer


Email : ouerghi.hajer@isi.utm.tn
Niveau : 2eme Licence en Sciences
de l' Informatique (CS)

Année Universitaire: 2022-2023


Objectifs du chapitre 2

Introduire les concepts de base du langage Java:


 les types primitifs
 les variables
 les conversions entre types
 les opérateurs
 les tableaux
 les structures de contrôle.

4
Les types en Java

Java est un langage fortement typé.

Deux Types de données :

 Types primitifs

 Types de référence vers des instances d’une classe.

5
Types primitifs
 Valeur logique
 boolean (true/false)
 Nombres entiers Nouveauté par rapport à C :
 byte (1 octet=8bits) boolean et byte
 short (2 octets)
 int (4 octets)
Les chaînes de caractères
 long (8 octets)
en JAVA sont des objets :
 Nombres non entiers (à virgule flottante)
classe String
 float (4 octets)
 double (8 octets)
 Caractère (un seul)
 char (2 octets)
6
Types primitifs
 Chaque type primitif possède une classe (wrapper) qui encapsule un attribut du type
primitif : Byte, Double, Float, Integer, Long, Short
 La classe Object est la classe parente de tous les objets en Java.

Exemple: la classe Integer


encapsule un attribut de
type int.

7
\u0000 is the null character in Unicode. It's different from null in Java,
Déclaration de variables
 Une variable possède un nom, un type et une valeur.
 La déclaration d'une variable doit donc contenir deux choses : un nom et le type de
données qu'elle peut contenir.
 Le type d'une variable peut être:
 soit un type primitif dit déclarée sous la forme type_primitif variable;
 soit une classe déclarée sous la forme classe variable;

Exemple de déclaration:
boolean test;
String chaine;
int jour, mois, annee ;
8
Déclaration de variables
Déclaration, Initialisation et Assignation des variables
Exemple:
int t; 🡪 Déclaration d’un entier t
int u = 3; 🡪 Déclaration et initialisation d’un entier
int a = 1.2; 🡪 Erreur de compilation
t=7; 🡪 Initialisation de t à la valeur 7
u=t; 🡪 Assignation (affectation) de la valeur de t à u
m=9; 🡪 Erreur déclaration préalable nécessaire
char c; 🡪 Déclaration
c=‘a’; 🡪 Initialisation
9
Déclaration de variables

Les constantes:
Une variable déclarée final est une constante et elle ne peut être modifiée une fois qu’elle a
été initialisée.
public static final int N = 42;

static: Une seule variable existe pour la classe.


final: la valeur de la variable est fixe.

10
Déclaration de variables
les chaînes de caractères
 les chaînes de caractères sont des objets. Ce sont des instances de la classe String.
 Déclaration de deux String :
String s1, s2;
 Initialisation :
s1 = "Hello";
s2 = "le monde";
 Déclaration et initialisation :
String s3 = "Hello";
 Concaténation :
String s4 = s1 + " " + s2;
11
Conversion des types
Casting sur les primitives
Le cast est le fait de forcer le compilateur à considérer une variable comme étant d’un type
qui n’est pas le type déclaré ou le type réel de la variable.

Il existe deux types de casting: Upcasting et Downcasting

12
Conversion des types
 Upcasting: convertit un sous-type en un super-type (classe fille => classe mère), il se
fait d’une manière implicite.
Exemple 1: convertit int en double Exemple 2: convertit un String en Object
int a=10 ; String str1 = "Hello world";
double b = 20 ; Object obj = str1;
b= a ; // b vaut 10; String n’est pas un type primitif, c’est une classe.

 Downcasting: convertit un super-type en un sous-type (classe mère => classe fille), il


se fait explicitement.

Exemple: Object obj;


String str2 = "Hello world";
String str2 = obj; 13
Conversion des types
va renvoyer cette erreur : erreur de compilation - types incompatibles found :
java.lang.Object required: java.lang.String

Solution: vous avez besoin de ‘downcaster’ explicitement en String :

String str2 = (String) obj; // cast

 Des conversions sont possibles aussi d’un type primitif en type objet et se font par des
méthodes.
Exemple:
int a ; toString ( ) est une méthode de la classe
double b = 2.0 ;
a = (int)b ; // cast
java.lang.Integer pour convertir un type
String int en texte (String).
s=a.toSting(); 14
Conversion des types
 Sur le même principe, il sera possible en passant par des méthodes de convertir un
type objet en type primitif.

 Les méthodes se nomment quelque soit la classe:


byteValue(), doubleValue, floatValue, IntValue, longValue et shortValue

Exemple:
int x = 10;
Integer z=new Integer(20);
f1 = new Float (x); //f1=10,0
x=z.intValue(); //Integer ->
int
double b=f1.doubleValue();
// Float -> double

15
Conversion des types
 Convertir une chaîne de caractères en type objet:

Chaque classe possède une méthode pour convertir une chaîne de caractères dans son
format.
nous utiliserons des méthodes statiques parseType, où Type sera remplacé par Int, Byte,
Double, Float, Long, Short.

Exemple:
String s="20";
Integer i=new Integer("10");
i=Integer.parseInt(s); // String -> Integer
System.out.println ("Valeur de i="+i);
//i vaut 20

16
Opérateurs
opérateur d’affectation
= affectation Opérateurs logiques
–= soustraction et affectation && et a && b
+= addition et affectation || ou a || b
! non !a
Opérateurs arithmétiques à deux opérandes
– soustraction opérateurs d’arithmétique binaire
* multiplication & et a & b
/ division | ou a | b
% modulo (reste de la division) ^ ou exclusif a ^ b
~ non ~a
Opérateurs à un opérande << décalage de bits à gauche a << 2
– opposé –x >> décalage de bits à droite b >> 2
++ pré-incrémentation ++x
++ post-incrémentation x++ opérateur à trois opérandes
-- pré-décrémentation --x ? : condition ? vrai : faux y < 5 ? 4 * y : 2 * y
-- post-décrémentation x-- (si…alors…sinon…)

Opérateurs relationnels
== équivalent x == 0
< plus petit que x < 2
> plus grand que x > 2
<= plus petit ou égal x <= 3
>= plus grand ou égal x >= 3 17
!= non équivalent a != b
Tableaux
 Une variable est déclarée comme un tableau dès lors que des crochets sont présents soit
après son type, soit après son identificateur.
int [] myArray ; // ou bien
int myArray [];

 Un tableau a toujours une taille fixe qui doit être précisée avant l’affectation de valeurs :
Par exemple : int myArray [] = new int[20]; // indices de 0 à 19 (n-1)
 La taille d’un tableau est connue par l’attribut length: nom_tableau.length.

 On peut également créer des matrices ou des tableaux à deux dimensions en multipliant les
crochets. Par exemple : int[][] ma_matrice;

18
Structures de contrôle
• Instructions conditionnelles : exécuter une série d'instructions dans le cas où une condition est
vraie, et d'exécuter une autre série d'instructions dans le cas contraire (même syntaxe qu'en C/C++).

Syntaxe: Exemple:
if <condition> <bloc si vrai> if (x<10)
[else if <condition> <bloc si vrai>] {x=x+1;}
[else <bloc si faux>] else { x=x-1;}

Exemple:
switch (num) {
Syntaxe: case 1 : System.out.println("Case1:
switch (<variable>) { Value is: "+num);
[case <val> : <bloc>]* case 2 : System.out.println("Case2:
default : <bloc> } Value is: "+num);
default : System.out.println(“default:
Value is: "+num); 19
}
Structures de contrôle
• Instructions itératives : Le traitement itératif est utilisé pour exécuter une ou plusieurs instructions
plusieurs fois (même syntaxe qu'en C/C++).
Exemple:
Syntaxe: for (int i = 0 ; i <
for (<init> ; <condition> ;
myArray,length; i++)
<instr_post_itération>) <bloc>
{ myArray[i]=getsomevalue();}

Exemple:
Syntaxe: while (i < biblio.nbLivres())
while <condition> <bloc>
{ Livre l =biblio.getLivre(i) ;
l.setDisponible(true) ;
i++; }
Syntaxe: Exemple:
do <bloc> while do a++
(<condition>); while (a != b); 20
Structures de contrôle
Instruction break et continue
break est utilisée pour sortir immédiatement d’un bloc d’instructions.
Dans le cas d’une boucle on peut également utiliser l’instruction continue avec la différence suivante :
break : l’exécution se poursuit après la boucle.
continue : l’exécution du bloc est arrêtée mais pas celle de la boucle. Une nouvelle itération du bloc commence
si la condition d’arrêt est toujours vraie.

Exemple:
for (int i = 0, j = 0 ; i < 100 ; i++) {
if (i > tab.length) {
break ;
}
if (tab[i] == null)
{ continue ;}
tab2[j] = tab[i];
j++;
} 21
Références

■ Java Platform, Standard Edition Documentation : https://docs.oracle.com/en/java/javase/

22

Vous aimerez peut-être aussi