Chap2 - Notions de Base-Java
Chap2 - Notions de Base-Java
de Sidi Bennour
Formation LP-IMA - S5
2021/2022
Pr. M. EL GHAZOUANI
Plan
1. Introduction a Java
Origine?
Pourquoi JAVA?
JAVA : JVM, JDK, API
Programme JAVA : application/applet
Premier programme (application)
2. Types de données
Types primitifs
Types prédéfinis
Classes Enveloppes
Classes String, StringBuer, ...
3. Structures de contrôles
4. Entrées-Sorties standards
Ecriture, lecture de caractère
La classe Scanner
Origine?
L'origine du langage Java
Java est un langage oriente objet a été mis au point en 1991 par la compagnie "Sun
Microsystems";
Le projet de développement au départ est connu sous le nom "Oak", dont le but est de
constituer un langage pouvant être intégré dans les électroménagers afin de les
contrôler, et permettre une communication entre les appareils.
L'origine du nom "Java"
En l'honneur de la boisson préférée des programmeurs: le café, dont une partie de la
production provient de l‘île Java.
Pourquoi JAVA?
Java est un langage objet :
Comme la plupart des langages récents, Java est oriente objet. Chaque fichier source
contient la définition d'une ou plusieurs classes qui sont utilisées les unes avec les autres
pour former une application.
Pourquoi JAVA?
Java est simple :
Le choix de ses auteurs a été d'abandonner des éléments mal compris ou mal exploites
des autres langages, Certains concepts à l'origine de nombreux "bugs" ont été
supprimes en JAVA. :
la notion de pointeurs (pour éviter les incidents en manipulant directement la
mémoire),
l'héritage multiple (pour éviter les ambiguïtés),
ou traites implicitement :
les chaînes de caractères et les tableaux sont désormais des objets faisant partie
intégrante du langage.
la libération de mémoire devient automatique grâce au garbage collector ...
Pourquoi JAVA?
Java est robuste et sûr :
Le compilateur Java est fortement typé ; toutes les variables sont typées et il n'existe
pas de conversion automatique qui risquerait une perte de données. Si une telle
conversion doit être réalisée, le développeur doit obligatoirement utiliser un cast ou
une méthode statique fournie en standard pour la réaliser.
Le traitement des exceptions est obligatoire. Le compilateur vérifie que les erreurs sont
traitées par le développeur. Dans le cas contraire le code ne compilera pas;
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.
Pourquoi JAVA?
Java est interprété, et portable :
La source est compilée en pseudo code ou byte-code puis exécuté par un interpréteur
Java : la Java Virtual Machine (JVM).
Ce concept est a la base du slogan de Sun pour Java : WORA (Write Once, Run
Anywhere : écrire une fois, exécuter partout). Le bytecode peut être exécuté et
obtenir quasiment les mêmes résultats sur toutes les machines disposant d'une JVM.
La machine virtuelle JVM existe par défaut sur de nombreuses plateformes (Linux,
Unix, Windows, Mac, ...);
Pourquoi JAVA?
Pourquoi JAVA?
Java est multi-thread :
Une application peut être décomposée en unités d'exécution fonctionnant
simultanément (parallélisme).
JAVA : JVM, JDK, API
JAVA est un environnement de programmation objet composé de :
le langage oriente objet JAVA
la machine virtuelle JVM
un ensemble d'outils de développement JDK (compilateur, générateur de
documentation, ...)
un ensemble de classes standards API (application programming interface ou
bibliothèque)
Outils de de développement JDK
L'outil de base : le JDK (Java Development Kit) de SUN :
gratuit
comprend de nombreux outils :
le compilateur : javac
l'interpréteur d'application : java
le débogueur : jdb
le générateur de documentation : javadoc
Liens pour JDK et API
Des environnements de développement non commerciaux :
http://www.eclipse.org/
http://www.netbeans.org/
Des environnements de développement commerciaux:
Visual J++ (Microsoft)
JBuilder (Borland/Inprise)
Des classes Java (API):
https://docs.oracle.com/en/java/javase/13/docs/api/index.html
Programme JAVA : application/applet
Il existe 2 types de programmes avec la version standard de Java : les applications et les
applets.
Une application autonome (stand alone program) est un programme qui s'exécute sous
le contrôle direct du système d'exploitation.
Une applet est un programme qui est chargé par un navigateur et qui est exécuté sous
le contrôle d'un plug in de ce dernier.
Programme JAVA : application/applet
Les principales différences entre une applet et une application sont :
les applets n'ont pas de méthode main() : la méthode main() est appelée par la
machine virtuelle pour exécuter une application.
les applets doivent ^être testées avec l'appletviewer ou doivent ^être intégrées à une
page HTML, elle même visualisée avec un navigateur disposant d'un plug in Java,
Premier programme (application)
public class PremProg {
public static void main(String[] args) {
System.out.println("1er programme Java");
}
}
int x =Integer.parseInt("9");
double c = Double.parseDouble("5");
Conversion de type de données (casting)
On appelle conversion de type de données, parfois transtypage (traduction de l'anglais
casting), le fait de modifier le type d'une donnée en une autre.
conversion implicite: une conversion implicite consiste en une modification du type
de donnée effectuée automatiquement par le compilateur. Cela signifie que lorsque
l'on va stocker un type de donnée dans une variable déclarée avec un autre type, le
compilateur ne retournera pas d'erreur mais effectuera une conversion implicite de la
donnée avant de l'affecter à la variable. Par exemple la conversion d'un type primitif
vers son Wrapper est implicite.
int n = 8;
Integer m = n;
Conversion de type de données (casting)
• Conversion explicite: une conversion explicite (appelée aussi opération de cast)
consiste en une modification du type de donnée forcée. Cela signifie que l'on utilise
un opérateur dit de cast pour spécifier la conversion. L'opérateur de cast est tout
simplement le type de donnée, dans lequel on désire convertir une variable, entre des
parenthèses précédant la variable.
double x = 8.324;
int n = (int) x;
x contiendra après affectation la valeur 8.
Exemple
class PremierExempleIf
{
public static void main(String[] args) {
if (n < 5) {
System.out.println("Votre nombre est plus petit que 5.");
} else {
System.out.println("Votre nombre est plus grand ou égale a 5.");
}
System.out.println(« Fin du programme.");
}
}
Types de données prédéfinis : chaînes de caractères
Chaînes de caractères (String)
Les chaînes de caractères ne correspondent pas à un type de données mais à
une classe, ce qui signifie qu'une chaîne de caractère est un objet possédant
des attributs et des méthodes.
Une chaîne peut donc être déclarée de la façon suivante :
String s = "Chaine de caractères";
Types de données prédéfinis : chaînes de caractères
En Java, les chaînes de caracteres sont des objets des classes String ou
StringBuffer.
• Dans ce cas, les éléments d’un tableau sont tout de même initialisés
avec une valeur par défaut (0 ou false ou null (selon type de base)).
Les tableaux
• La taille du tableau peut être donnée par une constante, une
expression ou une variable.
int t = 6;
int[] tableau = new int[t * t * 2];
• Par contre, la taille d’un tableau est donné à sa création et ne peut plus
être modifiée. Il n’est donc pas possible d’ajouter ou d’enlever des
éléments à un tableau. Dans ce cas, il faut créer un nouveau tableau
avec la taille voulue et copier le contenu du tableau d’origine vers le
nouveau tableau. Un tableau dispose de l’attribut length permettant
de connaître sa taille. L’attribut length ne peut pas être modifié.
int t = 6;
int[] tableau = new int[t * t * 2];
System.out.println(tableau.length); // 72
Les tableaux
Accès aux éléments d’un tableau :
L’accès aux éléments d’un tableau se fait en donnant l’indice d’un élément
entre crochets. Le premier élément d’un tableau a l’indice 0. Le dernier
élément d’un tableau a donc comme indice la taille du tableau moins un.
Cela signifie que dans un tableau 3D, les trois dimensions sont interprétées comme:
Le nombre de tables / tableaux: La première dimension indique le nombre de tables ou
de tableaux qu'un tableau 3D aura.
Le nombre de lignes: La deuxième dimension signifie le nombre total de lignes qu'un
tableau aura.
Le nombre de colonnes: La troisième dimension indique le nombre total de colonnes
dans le tableau 3D.
Tableau multidimensionnel
Il est possible d’initialiser un tableau à plusieurs dimensions.
Il existe également une boucle "for-each", qui est utilisée exclusivement pour parcourir
les éléments d'un tableau :
for (type variableName : arrayName) {
// code block to be executed
}
Structures de contrôles
while ( condition ) { ... };
do {
// code block to be executed
}
while (condition);