Vous êtes sur la page 1sur 41

LOGO

Université Saad Dahlab


de Blida

Éléments de base de Java

Disponible sur: https://sites.google.com/a/esi.dz/s-aroussi/


Mme BOUTOUMI
L2
2019 – 2020
Le langage Java

• JAVA est un langage de programmation orientée objet.


• Java hérite partiellement la syntaxe de C++ mais non ses
défauts (pointeurs, allocation, désallocation, héritage
multiple,...).
• Java utilise les classes et les types de base.
• Java est portable (indépendant de toute plate-forme).
• Java est fiable(fortement typé et pas de pointeurs en
apparence).
• Java est sûr (Mécanisme d’exception, vérification du code
à l’exécution et des accès réseau et/ou fichiers).
• Récupération automatique de la mémoire inutilisée
(Garbage Collector).
2
La plateforme de JAVA (1)

• Plateforme = environnement matériel ou logiciel sur lequel le


programme est exécuté.
• La plateforme Java se compose de:
▪la Java Virtual Machine (JVM) ou la machine virtuelle
Java.
▪ l’interface de programmation Java ou Java Application
Programming Interface (Java API)

Programme Java

API Java
Plateforme
Machine Virtuelle Java Java

Plateforme de base matériel

3
La plateforme de JAVA (2)

• API Java
• Une vaste collection de composants logiciels (classes et
interfaces).
• Organisée en bibliothèques (packages).
• Offre de nombreux services de manière standard
(indépendamment de la plateforme matérielle).
• Exemple de packages
•Java.lang: gestion des chaînes de caractères (String), interaction
avec l’OS (System), programmation parallèle (Thread).
• Java.util: parseur de chaîne, Liste, Dictionnaires, HashTable,…
• Java.io: gestion des entrées/Sorties (écran, clavier, fichier).
• java.applet: gestion des applets.
•Java.awt et Java.swing: gestion de l’interface graphique:
Fenêtres, boutons, boites de dialogue, événements souris,..

4
La plateforme de JAVA (3)
• La Machine Virtuelle Java (JVM) se charge
d'abstraire le comportement d'une machine.
• Le programme n’est pas traduit en langage machine, mais dans
un pseudo langage universel qui dispose de toutes les
fonctionnalités communes à toutes les machines: bytecode.

Le bytecode est un langage proche du langage machine,


indépendant de la plateforme (Matériel + Système d’exploitation)

• Pour exécuter un programme java sur une machine, il suffit


qu’elle dispose d’un programme approprié , machine virtuelle,
pour interpréter le bytecode.
• La machine virtuelle (JVM pour Java Virtual Machine) sert de
passerelle entre le bytecode et le langage machine.
5
La plateforme de JAVA (4)
Dans la technologie Java, on a donc besoin :
• Langage de programmation,
• Compilateur,
• JVM,
• APIs Java,
Les différentes éditions de Java:
• Java SE (Java Platform, Standard Edition): J2SE pour
applications classiques (desktop ou bureau)
• Java EE (Java Platform, Enterprise Edition): J2EE pour
développer et déployer des applications serveur, Web services,
etc. APIs Java
• Java ME (Java Platform, Micro Edition): J2ME pour les
applications embarquées, PDA, téléphones, etc.
• On veut juste exécuter, il suffit du JRE (Java Runtime
Execution) par opposition au JDK (Java Developpement Kit).
6
Compilation d’un programme Java

Interprétation

Compilation Windows
fichier.java Fichier.class

Code source ByteCode Linux

Mac

7
Syntaxe de Java
• S’appuie sur la syntaxe du langage C Chaque objet, classe, programme ou
• Structure: variable est associé à un nom :
l'identificateur, qui peut se composer
//déclaration des bibliothèques de tous les caractères
import nom_bib; alphanumériques et des caractères _ et
// Tout en Java est une classe $. Le premier caractère doit être une
lettre, le caractère de soulignement ou
class Nom_de_la_classe le signe dollar.
{//début
//déclaration des attributs & variables globales

// méthodes (fonction) utilisés
..
//le programme principale (celui qui s’exécute) doit contenir une
méthode main Règles de base:
public static void main (String[] args) { - Les blocs de code sont
encadrés par des accolades.
// liste des instructions séparées par « ; » - Chaque instruction se termine
} par un caractère ';' (point virgule).
- Java est sensible à la casse:
} // fin 8
void<>Void
Exemple

class Facto { ⚫ Il y a toujours une méthode


public static void “public static void main”,
main(String [] args) { exécutée quand l’application
int n=10; démarre
int f=1; ⚫ Chaque variable (argument ou
for (int i=1;i<=n;i++) variable locale) est une cellule,
{ avec un type déclaré
f*=i; statiquement
} ⚫ Les entiers ne sont pas des
objets, mais des types
System.out.println(f);
abstraits
}
} ⚫ Il faut initialiser les variables
locales avant de les utiliser

9
Les variables

❖ Déclaration
▪ 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.
❖ Type
▪ Soit un type élémentaire, primitif , déclaré sous forme :
• type_élémentaire variable;
▪ Soit une objet appartenant à une classe, sous la forme:
• classe variable ;
❖ Exemple
▪ long nombre;
▪ int compteur;
▪ String chaine;
▪ int jour, mois, annee;
10
Les types élémentaires
Type Désignation Longueur Valeurs Commentaires
pas de conversion
valeur logique :
boolean 1 bit true ou false possible vers un autre
true ou false
type
byte octet signé 8 bits -128 à 127
entier court
short 16 bits -32768 à 32767
signé
entouré de cotes
caractère
char 16 bits \u0000 à \uFFFF simples dans du code
Unicode
Java
-2147483648 à
int entier signé 32 bits
2147483647
virgule flottante 1.401e-045 à
float 32 bits
simple précision 3.40282e+038
virgule flottante 2.22507e-308 à
double 64 bits
double précision 1.79769e+308
-9223372036854775808
long entier long 64 bits à
9223372036854775807
NAN
Not A Number Ce sont des valeurs
Infinity,
Infinie spéciales
-Infinity 11
Initialisation des variables

❖ En Java, toute variable est initialisée avec une valeur par défaut en
accord avec son type.
❖ Les valeurs par défaut lors de l'initialisation automatique (uniquement
pour les attributs) sont :

Type Valeur par défaut


boolean false
byte, short, int, long 0
float, double 0.0
char \u000
classe null

12
Affectation

❖ Le signe = est l'opérateur d'affectation et s'utilise avec


une expression de la forme variable = expression.
▪ Exemple : x = y = z = 0;
❖ Si opération sur des opérandes de types différents, le
compilateur détermine le type du résultat en prenant le
type le plus précis des opérandes.
▪ Exemple:
• une multiplication d'une variable de type float avec une variable de
type double donne un résultat de type double.
• une opération entre un opérande entier et un flottant, le résultat est
du type flottant.

13
Les Opérateurs

❖ En plus des opérateurs relationnels habituels (<, <=, >,>=, ==, !=) Java
propose les opérateurs suivants:

& a&b ET binaire


^ a^b OU exclusif binaire
| a|b OU binaire
&& a && b ET logique
|| a || b OU logique

❖ A l'intérieure d'une expression analysée de gauche à droite l’ordre est:


❖ Incréments ++ et décréments --
❖ multiplication, division et reste de division (modulo)
❖ addition et soustraction
❖ comparaison
❖ le signe = d'affectation d'une valeur à une variable
❖ L'usage des parenthèses permet de modifier cet ordre de priorité.
14
Les structures de contrôles

Les Boucles (1)


❖While
while ( boolean )
{
... // code a exécuter dans la boucle
}

❖Do..While
do {
...
} while ( boolean )
15
Les structures de contrôles

Les Boucles (2)


❖ For
for (initialisation; condition; modification) {
...
}

❖ Exemple :
▪ for (i = 0 ; i < 10; i++ ) { ....}
▪ for (int i = 0 ; i < 10; i++ ) { ....}

❖ Il est possible d'inclure plusieurs traitements dans l'initialisation et la


modification de la boucle : chacun des traitements doit être séparé
par une virgule.
▪ Exemple : for (i = 0 , j = 0 ; i * j < 1000;i++ , j+= 2) { ....}
16
Les structures de contrôles

Le Conditionnel (1)
❖ La structure "if" ("si") ❖ La structure "else-if"
if (condition) { if (condition1) {
instruction 1; …
… }
}
else if (condition 2) {
❖ La structure "if-else" ("si-
sinon") …
if (condition) { }
… else if (condition 2) {
} …
else }
{ else {
… …
} }
17
Les structures de contrôles

Le Conditionnel (2)
❖ On ne peut utiliser
switch( expression ) { switch qu'avec des types
case valeur1: primitifs d'une taille
... maximum de 32 bits
break; (byte, short, int, char).
case valeur2:
... ❖ Si une instruction case
break; ne contient pas de break
… alors les traitements
associés au case
default: suivant sont exécutés.
...
} ❖ Il est possible
d'imbriquer des switch
18
Opérateur conditionnel (ternaire)

(condition) ? instruction si vrai : instruction si faux;

❖ la condition doit être entre des parenthèses


❖ Lorsque la condition est vraie, l'instruction de gauche est exécutée
❖ Lorsque la condition est fausse, l'instruction de droite est exécutée

❖ Exemple

total = (niveau ==5) ? 10 : 5;

Est équivalent à:

if (niveau == 5)
total = 10;
else total = 5 ;
19
Les entrées sorties
Affichage sur console
• Affichage sur la console
System.out.print(chaîne de caractères à afficher)
System.out.println(chaîne de caractères à afficher)
• chaîne de caractères peut être :
• une constante chaîne de caractères (String)
System.out.println("coucou");
• une expression de type String
System.out.println(age);
• une combinaison (concaténation) de constantes et d'expressions
de type String. La concaténation est exprimée à l'aide de
l'opérateur +
System.out.println("L'age de la personne est " + age + " son
poids " + poids);
20
Les entrées sorties
Lecture à partir du clavier

• La classe Scanner simplifie la lecture de données sur l’entrée


standard clavier.

• Pour utiliser la classe Scanner, il faut d’abord l’importer:


import java.util.Scanner;

• Ensuite il faut créer un objet de la classe Scanner :


Scanner sc = new Scanner(System.in);

21
Les entrées sorties
Lecture à partir du clavier

Méthodes de l’objet Désignation


string
String next() donnée de la classe String qui forme un mot,
String nextLine() donnée de la classe String qui forme une ligne,
boolean nextBoolean() donnée booléenne,
int nextInt() donnée entière de type int,
double nextDouble() donnée réelle de type double.

22
Les entrées sorties
Exemple:
import java.util.Scanner;
public class Addition
{
public static void main( String args[] ) {
Scanner sc = new Scanner( System.in );
int n1,n2,somme;
System.out.print(" Donner le premier entier: " );
n1 = sc.nextInt();
System.out.print(" Donner un deuxième entier: " );
n2 = sc.nextInt();
somme = n1 + n2;
System.out.println( "Somme est ", sommme );
sc.close()
}}
23
Les tableaux (1)
• Un tableau est une structure de données qui stocke une
série de n valeurs de même type (élémentaire ou objet)
• Il peut être utilisé comme une variable, un argument ou
un type de retour d’une méthode

• L’accès à chaque valeur se fait avec un indice entier


• Soit « tab » un tableau d’entiers
• tab[i] est le ième entier du tableau
• En Java i varie de 0 à n-1 (n est la taille du tableau)
• L’accès à la case « n » provoquera lève une exception
du type java.lang.arrayIndexOutOfBoundsException.

24
Les tableaux (2)
• Déclaration et Initialisation
• Pour définir un tableau d’entier on peut écrire:
• int[] a; ou int a[];
• Cette instruction ne déclare que la variable « a »
• L’opérateur « new » crée le tableau:
• a=new int[100];
• int a[]=new int[100];
• On peut aussi créer un tableau et l’initialiser simultanément avec
ses valeurs int[] nbrPremiers= {2, 3, 5, 7};
• Il est même possible d’initialiser un tableau anonyme:
• new int[] {11, 13, 17, 19};
• Cette syntaxe est employée pour réinitialiser un tableau sans créer
une nouvelle variable
• nbrPremiers =new int[] {11, 13, 17, 19};
25
Les tableaux (3)

❖ La déclaration et la définition de taille peuvent être séparés,


❖ La définition peut être mise n'importe où dans le corps d'instruction,
mais elle doit être utilisée avant toute manipulation du tableau. Cette
dernière instruction de définition peut être répétée plusieurs fois
dans le programme, il s'agira alors à chaque fois de la création
d'un nouvel objet (donc un nouveau tableau), l'ancien étant
détruit et désalloué automatiquement par le ramasse-miettes
(garbage collector) de Java.
int [ ] table1; char [ ] table2;
float [ ] table3; String [ ] tableStr;
……..
table1 = new int [5];
table2 = new char [12];
table3 = new float [8];
tableStr = new String [9];

26
Les tableaux (4)
• Taille et Parcours d’un tableau
• On peut récupérer la taille d’un tableau à l’aide de
nomduTableau.length

• Pour remplir ou parcourir un tableau nous pouvons utiliser


une boucle:
for (int i = 0; i < a.length; i++)
System.out.println(a[i]);
• Remarque:
• Il est légal en Java d’avoir un tableau de taille 0, qui est
différent de null.
• Cela est utile dans le cas d’une méthode qui retourne un
tableau comme type de retour
27
Les tableaux (5)
• Parcours d’un tableau avec for each
• Structure de contrôle introduite par JDK5, adaptée aux
collections, aux tableaux et aux chaînes.
int t [ ] = {1,2,3,4};
for (int v : t) System.out.println (v) ;
• la variable v prendra successivement les différentes valeurs
du tableau t. On obtiendra le même résultat qu’en utilisant :
for (int i = 0; i < t.length; i++)
System.out.println(t[i]);
• Remarque: for... each ne s’applique qu’à des consultations de
valeurs, et en aucun cas à des modifications. Ainsi, avec cette
instruction :
for (int v : t) v = 0; // correct mais ne fait probablement
pas ce qu’on attend 28
Les tableaux (6)
• Copie des tableaux
• Pour copier toutes les valeur d’un tableau dans un autre, il
faut employer la méthode arraycopy de la classe System
• System.arraycopy(source, indiceSource, cible,
indiceCible, compte)
• Exemple
int[] ta= {2, 3, 5, 7};
int[] tb={1,10,100,1000,1010,1100};
System.arraycopy(ta,1,tb,2, 3);
for (int i = 0; i < tb.length; i++)
System.out.print(tb[i]+" ");
• Résultat? 1 10 3 5 7 1100
29
Les tableaux (7)
Tableau comme argument
❖ Tableau en argument
• Pour passer un tableau à une méthode, il suffit de
déclarer les paramètres dans l'en tête de la méthode
Exemple : public void printArray(String
texte[]){ ... }

• Les tableaux sont toujours transmis par référence


puisque ce sont des objets (à voir plus tard).

30
Les tableaux (8)
Les tableaux a plusieurs dimensions
❖ En Java la notion de tableau à plusieurs dimension n’existe pas.
Pour manipuler un tableau à à plusieurs dimensions : il faut
déclarer un tableau de tableau.
Exemple : float tableau[][] = new float[10][10];
❖ Cela permet de déclarer des tableaux irréguliers, c’est-à-dire, la
taille des tableaux de la seconde dimension peut ne pas être
identique pour chaque occurrence.
Exemple :
int dim1[][] = new int[3][];
dim1[0] = new int[4];
dim1[1] = new int[9];
dim1[2] = new int[2];
int tableau [][] = {{5,1},{6,2},{7,3}};
int[][] tabEntiers = {{1,2,3,4,5,6}, {1,2,3,4}, {1,2,3,4,5,6,7,8,9}};
31
Exercice

Écrire un programme qui :


▪ Déclare un tableau T de 10 valeurs
entières,
▪ Calcule et affiche le minimum, le
maximum et la moyenne de T,

32
Solution
public class Tabint
{
public static void main (String args[])
{
int T [] = {10, 5, 30, 10,50,15,25,25,80,40};
int i ;
int Max = T[0], Min = T[0], somme=0 ;
Taille=T.length;

for (i=0 ; i<Taille ; i++)


{
if (T[i] > Max) Max = T[i] ;
if (T[i] < Min) Min = T[i] ;
somme += T[i] ;
}
System.out.println ("valeur maximale = " + Max) ;
System.out.println ("valeur minimale = " + Min) ;
double Moy = somme/Taille ;
System.out.println ("moyenne " + Moy) ;
}
} 33
Les chaines de caractères
• Le type de données String (chaîne de caractère) est une classe.
• Une chaîne de type String est un objet.
• Les chaînes de caractère figurent entre guillemets.
• Un objet String n'est utilisable qu'à travers les méthodes de la
classe String.
• Il est impossible de modifier le contenu d'un objet String construit
à partir d'une constante. Cependant, il est possible d'utiliser les
méthodes qui renvoient une chaîne pour modifier le contenu de la
chaîne.
Exemple : String texte = ''Java Java Java'';
texte = texte.replace('a','o');

• Java fonctionne avec le jeu de caractères Unicode (Universal


Code). Ceci concerne les types char et les chaînes de caractères.
•Le jeu de caractères Unicode code un caractère sur 2 octets. Les
caractères 0 à 255 correspondent exactement au jeu de caractères
ASCII.
34
Les chaines de caractères
Jeu de caractères spéciaux
Caractères spéciaux Affichage
\' Apostrophe
\'' Guillemet
\\ anti slash
\t Tabulation
\b retour arrière (backspace)
\r retour chariot
\f saut de page (form feed)
\n saut de ligne (newline)

35
Les chaines de caractères
Concaténation
 L'opérateur + permet de concaténer plusieurs chaînes.
 String texte = "Hello"+ " ";
 texte += "World";
 Cet opérateur sert aussi à concaténer des chaînes avec
tous les types de bases. La variable ou constante est
alors convertie en chaîne et ajoutée à la précédente.
 System.out.println(" La valeur de Pi est : " +Math.PI);
 int duree = 121;
 System.out.println(" durée = " +duree);

36
Les chaines de caractères
Autres Opérations
 Comparaison de deux chaines: Il faut utiliser la méthode equals()
 String texte1 = " texte 1 ";
 String texte2 = " texte 2 ";
 if ( texte1.equals(texte2) ) ...

 Détermination de la longueur d'une chaîne


 La méthode length() permet de déterminer la longueur d'une chaîne.
 Exemple: String texte = " texte ";
int longueur = texte.length();

 Modification de la casse d'une chaîne


 toUpperCase() permet d'obtenir une chaîne tout en majuscule
 toLowerCase() permet d'obtenir une chaîne tout en minuscule.
 Exemple: String texte = " texte ";
String textemaj = texte.toUpperCase();

37
Les conversions de types (1)

 Conversion implicite : conversion qui se produisent automatiquement de


manière implicite sans perte d'information.

 Exemple:
int i=3; double d=i;
 Conversion explicite ou cast : Il est parfois utile de réaliser des conversions
avec perte d'information ou de convertir un byte en un char. Pour cela, on doit
faire un cast.

 Exemple:
double d = 100.04;
//cast explicite
long l = (long)d;
// cast explicite
int i = (int)l;
38
Les conversions de types (2)
 Conversion d'un type int, float, etc en chaîne de caractères String
 Double.toString(5.23); Integer.toString(number), Character.toString(),
Boolean.toString(b)
 String.valueOf(int ou double ou boolean ou char)

 Conversion d'une chaine de caractères String en un autre type


 String.valueOf(int ou double ou boolean ou char)
 Integer.parseInt("3"), Double.parseDouble("3"), Long.parseLong("3"),
Boolean.parseBoolean(str), etc.
 Integer.valueOf(Str),Double.valueOf(Str),Short.valueOf("3");
Float.valueOf(Str),Boolean.valueOf("true");

 Conversion d'un entier int en entier long


 Exemple int i=10;
Integer monnombre=new Integer(i);
long j=monnombre.longValue();
39
Les fonctions et procédures « Méthodes »

 Une méthode est un bout de code qui a un nom et qui peut être appelé
depuis le reste du programme. En java, une méthode est forcément
déclarée dans une classe. Dans sa forme la plus simple, elle s’exprime
ainsi : public static type nomDeLaMéthode() { Corps de la procédure... }
• Exemple
public class TestMéthode {
….
public static int max (int x, int y, int z){
int max;
if (x > y) max = x;
else max = y;
Indique la valeur renvoyée;
if ( z > max) max = z;
arrete l’exécution de la méthode
return max:
}

} 40
Références bibliographiques

❖ http://richard-ostrowski.eu/SILNTI/supports/IP1/polycopie_java.pdf
❖ http://igm.univ-mlv.fr/~duris/JAVA/IR1/JavaLesBases.pdf
❖ http://webpages.lss.supelec.fr/perso/hugues.mounier/Teaching/Java_files
/JCours/polyBasesJavaHM.pdf

Vous aimerez peut-être aussi