Formation Java 8
Java
-
Un langage
-
Une plateforme
-
Une machine virtuelle (JVM)
-
Des APIs (JEE)
-
Un écosystème
Java - le langage
-
Compilé (en bytecode)
-
Orienté objet
-
Fortement typé
-
Concurrent
-
Syntaxe inspirée du langage C
Java bytecode
-
On code en Java (App.java)
-
On compile en bytecode (App.class)
-
La JVM exécute le bytecode
-
Le bytecode est toujours le même quel que soit l'environnement d'exécution
-
Seule l'implémentation de la JVM change
-
« Write once, run everywhere »
-
Mise en pratique
Créer un fichier App.java
Copier dans ce fichier :
Ouvrir une console et taper la commande :
Vérifier qu'un fichier App.class a bien été créé
Lancer le programme :
Visualiser le bytecode :
public class App {
public static void main(String[] args) {
System.out.println("Hello, World !");
}
}
javac App.java
java App
javap -c App
Hello World
class App {
public static void main(String[] args) {
System.out.println("Hello, World !");
}
}
Passer un argument en ligne de commande
class App {
public static void main(String[] args) {
System.out.println("Hello, " + args[0]);
}
}
Classe
class Person {
// corps de la classe Person
}
class Car {}
class Animal {}
class HttpClient {}
class Batmobile {}
new Batmobile();
Classe VS Instance
class Batmobile {}
class App {
public static void main(String[] args) {
new Batmobile();
new Batmobile();
new Batmobile();
}
}
Classe VS Instance
Variable
class Batmobile {}
class Program {
public static void main(String[] args) {
Batmobile batmobile; // On déclare la variable de type Batmobile
batmobile = new Batmobile(); // On initialise la variable
}
}
Déclaration de la variable
Batmobile batmobile;
-
type
-
nom
Initialisation de la variable
batmobile = new Batmobile();
-
nom de la variable
-
mot clef pour l'instanciation
-
nom de la classe instanciée
Déclaration + initialisation
class Batmobile {}
class Program {
public static void main(String[] args) {
Batmobile batmobile = new Batmobile();
}
}
Méthode
Définit le comportement d'une classe
class Batmobile {
// on déclare une méthode de la classe Batmobile
void goFast() {
// corps de la méthode goFast()
}
}
Signature d'une méthode
void goFast() { }
-
type de retour
-
nom
Appel d'une méthode
class Batmobile {
void goFast() {}
}
class Program {
public static void main(String[] args) {
Batmobile batmobile = new Batmobile();
batmobile.goFast(); // On appelle la méthode goFast()
}
}
batmobile.goFast();
System.out.println()
System.out.println("Hello, World !");
System.out.println(); // saute une ligne
System.out.println(42);
class Batmobile {
void goFast() {
System.out.println("You can't catch me !");
}
}
class Program {
public static void main (String[] args) {
Batmobile batmobile = new Batmobile();
batmobile.goFast();
}
}
Strings
-
String s = "Du texte";
-
Toute chaîne de charactère est une instance de la classe String
-
... autrement dit, un objet
Concaténation
String greeting = "Hello";
String name = "Bob";
String message = greeting + ", " + name + " !";
System.out.println(message) // Affiche "Hello, Bob !"
Classe
-
Etat
-
Comportement
Comportement => Méthode
class Person {
void sayHello() {
System.out.println("Hello !");
}
}
Etat => Attribut
class Person {
String name = "Bob";
void sayHello() {
System.out.println("Hello, my name is " + name);
}
}
Constructeur
class Person() {
String name;
Person(String name) {
this.name = name;
}
}
class Program {
public static void main(String[] args) {
new Person("Bob");
}
}
Plusieurs constructeurs
class Person() {
String name;
Person() {
this.name = "Default name";
}
Person(String name) {
this.name = name;
}
}
Constructeur par défaut
class Person() {
String name;
}
class Program {
public static void main(String[] args) {
new Person(); // Constructeur généré par le compilateur Java
}
}
TODO : Quiz
Méthode statique
-
Aussi appelée méthode de classe
-
Peut être appelée sans créer d'instance
-
Peut être appelée depuis une autre méthode statique
class Program {
static void sayHello() {
System.out.println("Hello, World!");
}
public static void main(String[] args) {
sayHello();
}
}
Types primitifs
-
Entiers
-
byte, short, int, long
-
-
Décimaux
-
float, double
-
-
Booléan
-
boolean
-
-
Charactère
-
char
-
Opérateurs
-
Mathématiques
-
+ - / * %
-
-
Incrémentation & Décrémentation
- ++ --
-
Ajouter & Soustraire
- += -=
Conditions
-
if... else
-
switch
-
? (opérateur ternaire)
Exercice 1
Créer une méthode statique "bothPositive" :
-
paramètres : deux entiers i et j
-
type de retour : boolean
-
retourne true si les deux entiers sont positifs
-
sinon retourne false
Exercice 2
Créer une méthode statique "maybeEquals" :
-
paramètres : deux entiers i et j
-
type de retour : int
-
retourne la somme si i différent de j
-
sinon, retourne le double de la somme
Exercice 3
Créer une méthode statique "waterMixState" :
-
paramètres : deux int i et j
-
type de retour : String
-
Si la moyenne des entiers est... :
-
inférieure à 0 => retourne "ICE"
-
comprise entre 0 et 100 => "LIQUID"
-
supérieure à 100 => "STEAM"
-
Boucles
-
while
-
do... while
-
for
Exercice 1
Créer une méthode statique "countTo" :
-
paramètres : int i
-
type de retour : aucun
-
affiche tous les nombres de 0 à i
Exercice 2
Créer une méthode statique "countEvensTo" :
-
paramètres : int i
-
type de retour : aucun
-
affiche tous les nombres pairs de 0 à i
Exercice 3
Créer une méthode statique "sumTo" :
-
paramètres : int i
-
type de retour : int
-
retourne la somme de tous les nombres de 0 à i
Exercice 4
Créer une méthode statique "averange" :
-
paramètres : int i
-
type de retour : int
-
retourne la moyenne des nombres de 0 à i
Garbage Collector
-
Processus automatique
-
Lancé régulièrement par la JVM
-
Mission : nettoyer la mémoire
-
Supprime les objets non référencés
-
On peut le lancer manuellement...
-
... mais c'est une mauvaise pratique
-
Java 8
By AdapTeach
Java 8
- 2,905