Académique Documents
Professionnel Documents
Culture Documents
Types de données
Structures de contrôles
Entrees-Sorties standards
Licence SIR
(Systèmes informatiques Répartis)
Plan
1 Introduction à Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Premier programme (application)
2 Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuffer, ...
3 Structures de contrôles
4 Entrees-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Laila AMIR Programmations Orientées Objet 2 / 35
Introduction à Java Origine?
Types de données Pourquoi JAVA?
Structures de contrôles JAVA : JVM, JDK, API
Entrees-Sorties standards Premier programme (application)
Plan
1 Introduction à Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Premier programme (application)
2 Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuffer, ...
3 Structures de contrôles
4 Entrees-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Laila AMIR Programmations Orientées Objet 3 / 35
Introduction à Java Origine?
Types de données Pourquoi JAVA?
Structures de contrôles JAVA : JVM, JDK, API
Entrees-Sorties standards Premier programme (application)
Origine?
Pourquoi JAVA?
Pourquoi JAVA?
Java est simple :
Le choix de ses auteurs a été d’abandonner des éléments mal compris
ou mal exploités des autres langages, Certains concepts à l’origine de
nombreux ”bugs” ont été supprimés en JAVA. :
la notion de pointeurs (pour éviter les incidents en manipulant
directement la mémoire),
la surcharge des opérateurs,
l’héritage multiple (pour éviter les ambiguités),
ou traités implicitement :
la libération de mémoire devient automatique grâce au garbage
collector ...
les chaı̂nes de caractères et les tableaux sont désormais des objets
faisant partie intégrante du langage.
Laila AMIR Programmations Orientées Objet 6 / 35
Introduction à Java Origine?
Types de données Pourquoi JAVA?
Structures de contrôles JAVA : JVM, JDK, API
Entrees-Sorties standards Premier programme (application)
Pourquoi JAVA?
Pourquoi JAVA?
Java est sécurisé :
La gestion de la mémoire n’est pas à la charge du développeur
Garbage Collector (ramasse-miettes) : un programme qui libère la
mémoire des objets qui ne sont plus référencé.
Pas de pointeurs : le fait de ne pas manipuler les pointeurs et donc
d’accéder à des zones mémoire sensibles diminue fortement
l’introduction des virus informatiques.
Le chargeur de classes (ClassLoader) est responsable du chargement
dynamique des classes. Il vérifie que la classe chargée n’en écrase
pas une autre en mémoire;
Le gestionnaire de sécurité (la classe SecurityManager) permet de
définir un certain nombre d’autorisations d’entrée/sortie locales
et sur le réseau (Applet uniquement)
Pourquoi JAVA?
javac PremProg.java
Notons que l’on peut compiler d’un seul coup plusieurs fichiers dans
un même répertoire, par la commande :
javac *.java
Les fichiers .class générés portent les mêmes noms que les fichiers
sources.
L’exécution du programme est appelée par la commande suivante :
java PremProg
Plan
1 Introduction à Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Premier programme (application)
2 Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuffer, ...
3 Structures de contrôles
4 Entrees-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Laila AMIR Programmations Orientées Objet 16 / 35
Introduction à Java
Types de données Types primitifs
Structures de contrôles Types prédéfinis
Entrees-Sorties standards
Types de données
Types primitifs
Classes Enveloppes
Les classes enveloppes (Wrappers) sont des classes qui encapsulent les
données de type primitif, afin de pouvoir les utiliser comme des objets.
Type primitif Classe enveloppe
boolean Boolean
char Character
byte Byte
short Short
int Integer
long Long
float Float
double Double
Les classes Byte, Short, Integer, Long, Float, Double se sont des
sous-classes de la classe Number.
Classes Enveloppes
Exemple
int x =Integer.parseInt(”9”);
double c = Double.parseDouble(”5”);
En Java, les chaı̂nes de caractères sont des objets des classes String ou
StringBuffer.
La classe String : java.lang.String (1)
La classe String gère des chaı̂nes de caractères non modifiables.
Les valeurs littérales (”abc”) peuvent être transformées en String.
L’opérateur + permet la concaténation de 2 String.
La classe StringBuffer
Création (allocation) :
par new après (ou dans) la déclaration :
int tab[]; // déclaration
tab = new int[5]; // création
ou implicite par initialisation
Initialisation :
int tab[] = {1, 2, 3}; // à la déclaration
// Sinon, valeurs par défaut : 0 ou false ou null (selon type de base)
Tableaux d’objets
Des tableaux contenant des (références à des) objets d’une classe donnée
peuvent être déclarés et créés pour toute classe (prédéfinie ou bien écrite
par le programmeur).
Exemple :
Un tableau de chaı̂nes de caractères (classe String) :
String[] tabChaines;
tabChaines = new String[2];
tabChaines[0] = ”OUI”;
tabChaines[1] = ”NON”;
Plan
1 Introduction à Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Premier programme (application)
2 Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuffer, ...
3 Structures de contrôles
4 Entrees-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Laila AMIR Programmations Orientées Objet 30 / 35
Introduction à Java
Types de données
Structures de contrôles
Entrees-Sorties standards
Structures de contrôles
switch ( variable ) {
case const1 : { ... }
break ;
case const2 : { ... }
break ;
default : { ... }
};
Plan
1 Introduction à Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Premier programme (application)
2 Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuffer, ...
3 Structures de contrôles
4 Entrees-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Laila AMIR Programmations Orientées Objet 32 / 35
Introduction à Java
Types de données Ecriture, lecture de caractère
Structures de contrôles La classe Scanner
Entrees-Sorties standards
Ecriture :
float z=1.732f;
System.out.print(”z=”);
System.out.print(z);
System.out.println(”,2z=”+(2*z));
Lecture :
// Lecture d’un caractère
int car = System.in.read();
// Lecture de 10 caractères
byte buf[] = new byte[10];
int nbLus = System.in.read(buf);
La classe Scanner
On utilise la classe Scanner pour lire autre type que des caractères.
import java.util.Scanner;
....
Scanner sc = new Scanner(System.in);
String ch = sc.next();
int k = sc.nextInt();
double val; Il existe une méthode nextXyz() et
if (sc.hasNextDouble()) une méthode hasNextXyz() pour
val = sc.nextDouble(); chaque type primitif xyz
String ligne = sc.nextLine();
Exemple
import java.util.Scanner;
public class MonProgramme {
public static void main(String[] args){
System.out.print(”Entrez un int : ”);
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i=0; i<n; i++) {
System.out.println(i);
}
}
}