On voit ici comment afficher une chaîne de caractères en java.
On peut voir comment faire la même chose dans d'autres langages sur cette page.
On peut voir comment faire la même chose dans d'autres langages sur cette page.
Hello World 1
(voir HelloWorld1.java)Créer un répertoire
HelloWorld et dedans créer un fichier HelloWorld1.java.
Copier le code suivant dans
HelloWorld1.java :
/**
Premier exemple
**/
class HelloWorld1{
/**
Point d'entrée du programme
@param args Tableau de chaînes passé au programme
**/
public static void main(String[] args) {
System.out.println("Hello World!"); // Affiche une chaîne de caractères
}
}
Compiler le programme :
javac HelloWorld1.javaOn voit que ça a généré un fichier
HelloWorld1.class
Exécuter le programme :
java HelloWorld1Notes :
-
Il n'y a pas de directive
package; on se trouve donc dans le package par défaut. -
La déclaration de
HelloWorld1ne contient pas le mot-cléextends, elle dérive donc dejava.lang.Object. - Notre classe contient une seule méthode statique, on n'a pour l'instant pas instancié d'objet.
-
On va voir plus loin que la méthode
main()est particulière. -
La ligne qui affiche "Hello World" utilise la classe
System.
On n'a pas importé cette classe, c'est donc une classe du packagejava.lang.
En allant voir la doc d'Oracle, on peut voir que cette classe a une variable statique,out.outest de typejava.io.PrintStream, qui contient plusieurs méthodesprintln(). Une de ces méthodes a la signaturepublic void println(String x); c'est elle qui est utilisée.
La fonction main()
la méthodemain() est particulière car elle fournit un point d'entrée à l'interpréteur java.
Lorsqu'on exécute du code java, l'interpéteur va chercher un méthode dont la signature est exactement :
public static void main(String[] args)Une classe donnée ne peut avoir qu'une seule fonction
main() avec cette signature précise.
Mais deux classes peuvent avoir chacune leur fonction
main(), ce qui permet d'avoir plusieurs points d'entrée dans une application.
Le paramètre
args est un tableau contenant des éléments de type String.
On accède aux éléments de ce tableau par
args[0], args[1] etc.
Hello World 2
(voir HelloWorld2.java)On déporte l'affichage dans une méthode statique :
class HelloWorld2 {
public static void main(String[] args) {
echo();
}
public static void echo() {
System.out.println("Hello World!");
}
}
Notes :
-
Syntaxe de l'appel d'une méthode statique de la même classe.
A la place deecho();
on aurait aussi pu écrireHelloWorld2.echo();
Hello World 3
(voir HelloWorld3.java)On passe le message à afficher en paramètre au programme :
class HelloWorld3 {
public static void main(String[] args) {
echo(args[0]);
}
public static void echo(String msg) {
System.out.println(msg);
}
}
Pour appeler le programme :
java HelloWorld3 "Mon message"Notes :
-
On n'a pas géré les erreurs possibles : appel sans paramètre ou avec plusieurs paramètres.
Générez une erreur en appelant la fonction sans paramètre :java HelloWorld3
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at HelloWorld3.main(HelloWorld3.java:4)L'interpréteur java essaye d'accéder au premier élément du tableauargsmais le tableau est vide.
Une exception est lancée, de typeArrayIndexOutOfBoundsException.
Hello World 4
(voir HelloWorld4.java)On déporte l'affichage dans une autre classe :
Le fichier
HelloWorld4.java contient
class HelloWorld4 {
public static void main(String[] args) {
Afficheur.afficher(args[0]);
}
}
class Afficheur{
public static void afficher(String msg) {
System.out.println(msg);
}
}
Pour compiler :
javac HelloWorld4.javaPour compiler la classe
HelloWorld4, le compilateur voit qu'il doit aussi compiler la classe Afficheur et génère HelloWorld4.class et Afficheur.class.
Notes :
- On n'a toujours pas instancié d'objet.
- Syntaxe de l'appel d'une méthode statique d'une autre classe :
NomdelaClasse.nomDeLeMéthode(paramètres) -
On a mis les classes
HelloWorld4etAfficheurdans le même fichier. C'est possible mais déconseillé.
Hello World 5
(voir hello5)On va créer une instance de
Afficheur.
Créez un répertoire
hello5 avec 2 fichiers :
HelloWorld5.java
class HelloWorld5 {
public static void main(String[] args) {
Afficheur a = new Afficheur(args[0]);
a.afficher();
}
}
Afficheur.java
class Afficheur{
/** Le message à afficher **/
private String msg;
public Afficheur(String msg){
this.msg = msg;
}
public void afficher(){
System.out.println(msg);
}
}
Pour compiler :
javac HelloWorld5.javaNotes :
- Création d'une instance avec le mot-clé
new. -
Appel d'une méthode d'instance
unObjet.nomDeLaMéthode(paramètres) -
Dans le constructeur
Afficheur(String msg), on utilise le mot-cléthispour référer à l'instance courante.
C'est ici obligatoire car le paramètremsget la variable d'instancemsgont le même nom.
Avec des noms différents, on n'aurait pas été obligés d'utiliserthis:public Afficheur(String message){ msg = message; } -
Dans
afficher(), on se réfère à la variable d'instance par son nom,msgsans avoir besoin d'utiliserthis.
Mais on aurait pu aussi écrire explicitement :System.out.println(this.msg);