Vous êtes sur la page 1sur 35

LOGO

INTRODUCTION AU LANGAGE JAVA


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

•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
• 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
• 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
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 :
//déclaration des bibliothèques l'identificateur, qui peut se composer de
tous les caractères alphanumériques et des
import nom_bib;
caractères _ et
// Tout en Java est une classe $. Le premier caractère doit être une
class NomClasse lettre, le caractère de soulignement ou 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:
} // 8
void<>Void
Exemple

class Factoriel {  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 variable locale) est une cellule,
i=1;i<=n;i++) avec un type déclaré
{ statiquement
f*=i;  Les entiers ne sont pas des
} objets, mais des types
abstraits
System.out.prin
tln(f);
 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 des valeurs
Infinity,
Infinie sont
-Infinity
spéciales
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
 While
while ( boolean )
{
... // code a exécuter dans la boucle
}

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

Les Boucles
 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 conditionnelles

La Conditionnelle
 La structure "if" ("si")
if (condition) {
instruction 1;

}
 La structure "if-else" ("si- sinon")
if (condition) {

}
else
{

}

17
Les structures de choix

switch( expression ) {  On ne peut utiliser switch


case valeur1: qu'avec des types primitifs
... d'une taille maximum de
break; 32 bits (byte, short, int,
case valeur2: char).
...
break;  Si une instruction case ne
… contient pas de break alors
les traitements associés au
case suivant sont exécutés.
default:
...  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 ", somme );
sc.close()
}} 23
Les tableaux
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

• 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

 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
• 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
• 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
• 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

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
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 [][] = 31
{{5,1},{6,2},{7,3}};
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.
32
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)

33
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);
34
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();
35

Vous aimerez peut-être aussi