Programmation Java/Classes de base

Java est livré avec un ensemble de bibliothèques de base proposant des classes qui s'avèrent vite nécessaires. Tout programmeur Java doit avoir un bonne connaissance de toutes les possibilités offertes par ces composants. Il n'est pas nécessaire d'apprendre quoi que ce soit mais simplement d'avoir une idée générale de ce qui est disponible pour savoir quelles parties de la bibliothèque utiliser pour résoudre un problème donné.

Dorénavant, vous aurez toujours besoin d'avoir avoir la documentation complète sous le coude, via Internet ou sur votre ordinateur.

Paquetage java.lang

modifier

Le paquetage (le package) java.lang est le paquetage de base de Java. Il n'est même pas nécessaire de faire un import de ce paquetage : il est implicite.

Ce paquetage regroupe les classes concernant les types (Boolean, Byte, Character, Short, Integer, Long, Float, Double, String), les classes (Object classe de base de toutes les autres, Class), les threads (Thread, ThreadGroup), …

Les chaînes de caractères

modifier

Les chaînes de caractères ne sont pas des types primitifs et sont des instances de la classe java.lang.String. Les constantes sont entourées de guillemets.

Exemple :

String message = "Test des chaînes de caractères";

La concaténation se fait avec l'opérateur + :

String message = "Test des chaînes de caractères"
               + " et de la concaténation";

La concaténation d'une chaîne de caractères avec un type primitif ajoute sa représentation nominale (décimal pour les types entiers, le caractère pour char, "true" ou "false" pour boolean) :

int a = 100;
String message = "A vaut " + a;   // A vaut 100

La concaténation d'une chaîne de caractères avec un objet appelle sa méthode toString() retournant une chaîne de caractères :

Object o=new Object();
String message = "L'objet " + o;  // L'objet java.lang.Object@1fe081a3

Par défaut, la méthode toString() définie dans la classe java.lang.Object retourne le nom de la classe de l'objet, suivi du caractère arobase @, suivi de la valeur retournée par la méthode hashCode() en hexadécimal.

La méthode length() permet d'obtenir la longueur d'une chaîne de caractères :

String message = "Test des chaînes de caractères";
System.out.print  ( "Le message contient " );
System.out.print  ( message.length() );
System.out.println( " caractères" );

Equivaut à :

System.out.print  ( "Le message contient " );
System.out.print  ( "Test des chaînes de caractères".length() );
System.out.println( " caractères" );

Nous pouvons utiliser des guillemets à l'intérieur d'une chaine de caractères en utilisant le caractère d'échappement \

String ma_string = "le mot \"mot\" contient 3 lettres";

Nous pouvons également utiliser des caractères spéciaux tels que \n (nouvelle ligne), \t (tabulation) pour formater la sortie.

String ma_string_formatee = "colonne 1\tcolonne 2\nvaleur 1\tvaleur 2\n"

Enfin, nous pouvons afficher des caractères particuliers (tels les caractères accentués, par exemple) en utilisant le préfixe \u suivi du code Unicode du caractère sur 4 chiffres hexadécimaux :

String chaine_unicode = "\u002D"; // le signe moins -

Cependant, la séquence \u est également utilisable en dehors des chaînes de caractères pour encoder le code source. Exemple :

int a = 200 \u002D 50; // le signe moins - -> 150

équivaut à :

int a = 200 - 50; // 150

Paquetage java.io

modifier

Ce paquetage concerne les flux d'entrées et sorties en général (fichiers, réseau, buffer).

Les deux classes abstraites InputStream et OutputStream gèrent les entrées et sorties binaires, utilisant des tableaux d'octets.

Les sous-classes de celles-ci sont plus spécialisées :

  • FileInputStream et FileOutputStream gèrent les fichiers,
  • ByteArrayInputStream et ByteArrayOutputStream lisent/écrivent depuis/vers un tableau d'octets.

Les classes Reader et Writer utilisent les tableaux de caractères.

Leurs sous-classes sont également plus spécialisées :

  • FileReader et FileWriter gèrent les fichiers,
  • StringReader et StringWriter lisent/écrivent depuis/vers une chaîne de caractères.


Paquetage java.nio

modifier

Paquetage java.text

modifier

Paquetage java.util

modifier

Ce paquetage contient les classes permettant la gestion de collections (liste chaînées, table de hachage, tableau extensible, …). Elle contient également une classe de générateur aléatoire (classe Random), deux classes gérant le lancement de tâches périodiques ou à un moment donné (Timer et TimerTask), la gestion des dates (Date, Calendar, GregorianCalandar), …

Paquetage java.net

modifier

Ce paquetage contient les classes permettant de communiquer à travers un réseau en utilisant des sockets TCP ou UDP. Il existe également des classes pour gérer les adresses IP (version 4 et 6).

Ce paquetage regroupe les classes graphiques de base.

Les composants graphiques utilisent les composants natifs de la platforme de lancement. Ils sont nommés Heavyweight, par opposition à Lightweight qui désigne les sous-classes de la classe Component. Bien que beaucoup plus rapide, il tend à être remplacé par swing, bien plus fourni.

C'est un paquetage de gestion d'interface graphique très fournie.

Les composants sont entièrement développés en Java à partir de la classe java.awt.Component. Quelle que soit la plateforme de lancement de l'application, ils ont donc le même comportement et la même apparence, qui peut d'ailleurs être configurée.