Page de garde Classes de base du JDK Novembre 2000
Présentation des classes de base Les classes de base Réification du langage : java.lang Réification des différents types de références : java.lang.ref "Réflectivité" (en fait introspection) : java.lang.reflect Mathématiques sur les grands nombres : java.math Entrées / sorties : java.io Classes utiles : java.util Classes graphiques : java.awt et javax.swing
java.lang \ Réification des types primitifs Réification des types primitifs Chaque type primitif du langage possède une classe associée dans le package java.lang java.lang.Boolean, java.lang.Character, java.lang.Integer, … Ces classes possèdent des constructeurs ou des méthodes effectuant les conversions Les classes dérivant de java.lang.Number : Définissent les bornes des plages de valeur ( MIN_VALUE et MAX_VALUE ) Permettent la conversion de chaînes de caractères en nombre ( parseXXX(…) ) Permettent la conversion inverse (en différentes bases pour les entiers) Les classes de flottants ( java.lang.Float et java.lang.Double ) définissent : La constante NaN (Not a Number) Les constantes NEGATIVE_INFINITY et POSITIVE_INFINITY Ainsi que les prédicats correspondants
java.lang \ Classes et interfaces "systèmes" Classes et interfaces "systèmes" Le package java.lang contient aussi les classes et interfaces "connues" du compilateur Ces classes sont traitées de manière spécifique par le compilateur java.lang.Object java.lang.String et java.lang.StringBuffer java.lang.Throwable, java.lang.Error et java.lang.Exception java.lang.Runnable et java.lang.Thread …
java.lang \ Les chaînes de caractères Les chaînes de caractères java.lang.String stocke un tableau fixe de caractères java.lang.StringBuffer stocke un ensemble mutable de caractères Ces classes proposent de nombreuses méthodes : De comparaison Dextraction de caractères De modification de la casse … Lorsque lon effectue une concaténation de chaînes à laide de lopérateur +, le système effectue de nombreuses conversion String StringBuffer … Pensez lorsque nécessaire à utiliser StringBuffer dans vos expressions !
java.lang.Math Cette classe donne accès à de nombreuses fonctions (méthodes statiques) mathématiques : Valeur absolue, arrondissement, troncature par défaut ou excès Maximum et minimum Valeurs aléatoires Logarithmes et exponentielles Conversions angulaires Fonctions trigonométriques … Constantes e et ( java.lang.Double )
java.math Le package java.math Contient deux classes permettant une arithmétique de précision arbitraire : java.math.BigInteger Jamais doverflow Méthodes pour les performances (décalages, négations, opérations logiques…) Congruence Test (grossier) de primalité java.math.BigDecimal Valeur entière "infinie", jusquà 32 chiffres après la décimale
java.util Le package java.util Contient des abstractions et implémentations de : Collections génériques Calendriers Contient quelques interfaces / classes utiles : Itérateur Vecteur de bits Générateur de nombre pseudo-aléatoires Décomposition de chaînes en lexèmes Manipulation de ressources Aide à la localisation dapplications …
java.util \ Les Collections Les Collections Aussi appelées Containers : tableaux, vecteurs, hashtables, … Les interfaces appartiennent à deux hiérachies distinctes : Un Set est un ensemble dobjets distincts Une List est une séquence dobjets ordonnés Une Map associe des paires (clef, valeur), les clefs étant uniques
java.util \ Les Collections Les Collections Définissent des méthodes pour : Ajouter et supprimer des éléments ( add...(...), remove...(...) ) Tester la présence déléments ( contains...(...) ) Effectuer une itération sur les éléments ( iterator() ) … Limplémentation "complète" des méthodes nest pas obligatoire : lappel de méthodes non supportées déclenche java.lang.UnsupportedOperationException Les objets stockés dans une collection ordonnée ou un Set doivent implémenter linterface java.lang.Comparable Note : les collections par défaut ne sont pas thread-safe !
java.util \ Les Collections \ Implémentations Implémentations des Collections Hash Table Resizable Array Balanced TreeLinked List SetHashSetTreeSet ListArrayListLinkedList MapHashMapTreeMap A connaître également : java.util.Vector java.util.Stack java.util.BitSet
java.util \ Les Collections \ Wrappers Les Wrappers de Collections Méthodes statiques de la classes java.util.Collections Génèrent, à partir de collections, de nouvelles collections : Pour les rendre thread-safe public static List synchronizedList( List lstList ); public static Set synchronizedSet( Set stSet ); … Pour les rendre non-mutables (lecture-seule) public static List unmodifiableList( List lstList ); public static Set unmodifiableSet( Set stSet ); …
java.util \ Les Collections \ Wrappers Algorithmes Implémentations polymorphiques dans java.util.Collections : Valeur minimum/maximum Binary Search (sur List ) Reverse (sur List ) Shuffle (sur List ) Sort (sur List ) … Implémentations non polymorphiques dans java.util.Arrays (sur des tableaux) : Binary Search Sort …
java.util \ Les Itérateurs Les Itérateurs "Ancienne" version : java.util.Enumeration boolean hasMoreElements() Object nextElement() "Nouvelle" version : java.util.Iterator boolean hasNext() Object next() void remove()
java.util \ java.util.StringTokenizer java.util.StringTokenizer Décompose une chaîne de caractères en tokens, selon un ensemble de caratères séparateurs StringTokenizer( String str ) StringTokenizer( String str, String delim ) StringTokenizer( String str, String delim, boolean returnTokens ) Se comporte grossièrement comme un Enumerator : boolean hasMoreTokens() String nextToken() String nextToken( String delim ) Séparateurs par défaut : "\t\n\r\f"
java.io Les entrées/sorties Le package java.io contient de nombreuses classes permettant : Daccéder aux entrées des systèmes de fichiers accessibles Deffectuer des opérations entrées/sorties sur celles-ci
java.io.File Abstraction d'un chemin de fichier ou de répertoire Trois constructeurs d'objets java.io.File : File( String pathname ) File( String parent, String child ) File( File parent, String child ) Test d'existence de fichier : boolean exists() Création réelle de fichier : boolean createNewFile() Suppression, renommage : boolean delete(), void deleteOnExit() boolean renameTo( File )
java.io.File Création de répertoire : boolean mkdir(), boolean mkdirs() Prédicats de tests de type d'entrée : isDirectory(), isFile() canRead(), canWrite(), isHidden() Exhibe des méthodes pour énumérer les fichiers : static File[] listRoots() String[] list(), String[] list( FilenameFilter ) File[] listFiles(), File[] listFiles( FilenameFilter ), … …
java.io.File !!! Attention à la portabilité !!! N'utilisez ni /, ni \ dans les noms de chemins, utilisez : static String separator static char separatorChar N'utilisez ni ;, ni : pour séparer des chemins, utilisez : static String pathSeparator static char pathSeparatorChar
java.io \ Les streams Les streams Tous les accès aux données (fichier, socket, …) se font via des streams (flux, flot)
java.io \ Les streams Les streams Les flots de caractères (lecteurs) :
java.io \ Les streams Les streams Les flots de caractères (écrivains) :
java.io \ Les streams Les streams Les flots "d'octets" (lecteurs) :
java.io \ Les streams Les streams Les flots "d'octets" (écrivains) :
java.io \ Le StreamTokenizer java.io.StreamTokenizer La version Stream de java.util.StringTokenizer …