page de garde classes de base du jdk novembre 2000 yannis.bres@cma.inria.fr

Post on 04-Apr-2015

113 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Page de garde

Classes de base du JDK

Novembre 2000Yannis.BRES@cma.inria.fr

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

D’extraction de caractères

De modification de la casse

Lorsque l’on effectue une concaténation de chaînes à l’aide de l’opérateur +, le système effectue de nombreuses conversion String StringBuffer…

Pensez lorsque nécessaire à utiliser StringBuffer dans vos expressions !

java.lang.Math

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 d’overflow

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 d’applications

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 d’objets distincts

Une List est une séquence d’objets 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())

L’implémentation "complète" des méthodes n’est pas obligatoire : l’appel 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 l’interface 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 TableResizable

ArrayBalanced Tree Linked List

Set HashSet TreeSet

List ArrayListLinkedLis

t

Map HashMap TreeMap

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 :

D’accéder aux entrées des systèmes de fichiers accessibles

D’effectuer des opérations entrées/sorties sur celles-ci

java.io.File

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

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

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…

top related