Introduction

Le langage Java est à la fois un langage compilé (comme le C) et un langage interprété (comme le bash ou le PHP). On part d'un fichier source en Java, dont voici un exemple :

/**
* Cette classe est une simple coquille pour recevoir la méthode principale
*
* @version 1.1 09 March 2014
* @author Luc Hernandez
*/
public class Bonjour {
 
  /**
  * Affiche «Bonjour !»
  *
  * @param args la liste des arguments de la ligne de commande (inutilisée ici)
  */
  public static void main(String[] args) {
    System.out.println("Bonjour !");
  }
}

Ce fichier source est compilé par l'utilitaire javac.

bob@box:~$ javac Bonjour.java

Le résultat est un fichier Bonjour.class qui contient du «Java bytecode». Il s'agit de langage machine, mais il n'est pas adapté à l'architecture de nos machines. Il faut donc utiliser une machine virtuelle (la JVM) pour l'interpréter.

bob@box:~$ java Bonjour
Bonjour !

Remarque Ce n'est pas le nom du fichier compilé qui est passé en argument à la commande java, mais le nom de la classe.

Les commentaires fournis dans l'exemple précédent sont formatés pour permettre la génération automatique de documentation.

bob@box:~$ javadoc Bonjour.java

Le langage Java est orienté objet, mais les données les plus simples sont traitées exactement comme en C. Il existe seulement huit types primitifs pour représenter ces données, et leur taille en mémoire est standardisée :

Type BitsExemple
byte 8
short 16
int 32 -24
long 64 -148L
boolean 8 false
char 16 'Y'
float 32 -1.5f
double 64 47.0d

Si une variable n'est pas d'un type primitif, c'est une référence, c'est à dire qu'elle peut contenir l'adresse d'un objet (en C, ce serait un pointeur sur un enregistrement).

String texte = null; // texte est une référence vide
texte = "Fibule";    // texte fait référence à un objet de classe String
                     // qui contient F, i, b, u, l, e
System.out.println("résultat : " + texte);

La majorité des objets ne sont pas préexistants et on doit généralement créer un objet avant de l'utiliser. C'est le rôle du contructeur, qui est invoqué à l'aide du mot-clé new.

int[][] tab = null; // tab est une référence vide
tab = new int[15][2]; // tab reçoit la référence à un nouveau tableau (de tableaux)
tab[5][0] = 12;
System.out.println("capacité : " + tab.length);

Les objets sont exactement comme des enregistrements en C et contiennent des données dans leurs champs, auxquels on accède par l'opérateur «.». Mais les objets contiennent également des méthodes, c'est à dire des fonctions qui opèrent sur l'objet.

String min = "exemple";
String maj = min.toUpperCase();
String abr = maj.substring(0, 2);
System.out.println(abr); // affiche "EX"

  1. Démarrage. Compilez le programme donné en exemple dans le premier rappel. Ouvrez le fichier obtenu et constatez ce qui reste lisible. Lancez le programme.

    La méthode println est capable d'afficher n'importe quel type de données. Écrivez une application qui définit et initialise une variable de chaque type primitif, puis affiche à la console la valeur de chacune de ces variables. Vous pouvez substituer la méthode print à la méthode println si vous ne souhaitez pas revenir à la ligne.

  2. Arguments. Le paramètre args de la méthode principale contient tous les arguments donnés à l'exécution du programme (après le nom de la classe). Écrivez une application qui reçoit sur sa ligne de commande une liste de noms et qui salue chacune des personnes citées.

    bob@box:~$ java Bonjour Denis Luc Pierre
    Bonjour Denis
    Bonjour Luc
    Bonjour Pierre
    
  3. Somme. Écrivez une application qui prend une liste d'entiers sur la ligne de commande et affiche leur somme. Pour cela, il va falloir transformer les arguments (qui sont des objets de la classe String) en int. On utilise une méthode de classe (une méthode qui ne s'applique pas à un objet mais à la classe elle-même).

    String nombre = "27";
    int n = Integer.parseInt(nombre); // n vaut 27
  4. Tri. Reprenez le programme de l'exercice précédent, et au lieu d'afficher la somme, affichez la liste des entiers en ordre croissant. Une autre méthode de classe va vous y aider : la méthode sort de la classe Arrays.

    Arrays.sort(tab); // trie le tableau tab par ordre croissant

    La classe Arrays fait partie d'une bibliothèque (en Java on dit un package) qu'il faut inclure. Il suffit pour cela d'ajouter au tout début du fichier source la ligne suivante :

    import java.util.Arrays;
  5. Grille. Écrivez un programme qui affiche une grille dont la taille est donnée sur la ligne de commande.

    bob@box:~$ java Grille 2
    +-+-+
    | | |
    +-+-+
    | | |
    +-+-+
    

retour à la page d'accueil

retour au sommet