100% ont trouvé ce document utile (2 votes)
654 vues1 230 pages

Guide complet sur le langage Java

Transféré par

Yassine Elbasit
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
100% ont trouvé ce document utile (2 votes)
654 vues1 230 pages

Guide complet sur le langage Java

Transféré par

Yassine Elbasit
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Java Language

#java
Table des matières
À propos 1

Chapitre 1: Démarrer avec le langage Java 2

Remarques 2

Editions et versions Java 2

Installation de Java 3

Compiler et exécuter des programmes Java 3

Et après? 3

Essai 3

Autre 3

Versions 4

Examples 4

Création de votre premier programme Java 4

Regard sur le programme Hello World 6

Chapitre 2: Affirmer 11

Syntaxe 11

Paramètres 11

Remarques 11

Examples 11

Vérification de l'arithmétique avec assert 11

Chapitre 3: Agents Java 12

Examples 12

Modification de classes avec des agents 12

Ajout d'un agent à l'exécution 13

Mise en place d'un agent de base 13

Chapitre 4: Analyse XML à l'aide des API JAXP 15

Remarques 15

Principes de l'interface DOM 15

Principes de l'interface SAX 15

Principes de l'interface StAX 16


Examples 16

Analyse et navigation d'un document à l'aide de l'API DOM 16

Analyse d'un document à l'aide de l'API StAX 17

Chapitre 5: Annotations 20

Introduction 20

Syntaxe 20

Remarques 20

Types de paramètres 20

Examples 20

Annotations intégrées 20

Vérification des annotations d'exécution par réflexion 24

Définition des types d'annotation 24

Les valeurs par défaut 25

Méta-annotations 25

@Cible 25

Valeurs disponibles 25

@Rétention 26

Valeurs disponibles 27

@Documenté 27

@Hérité 27

@Repeatable 27

Obtenir des valeurs d'annotation au moment de l'exécution 28

Annotations répétées 29

Annotations héritées 30

Exemple 30

Compiler le traitement du temps à l'aide du processeur d'annotations 31

L'annotation 31

Le processeur d'annotation 31

Emballage 33

Exemple de classe annotée 33

Utilisation du processeur d'annotations avec javac 34


Intégration IDE 34

Netbeans 34

Résultat 35

L'idée des annotations 35

Annotations pour 'this' et paramètres du récepteur 35

Ajouter plusieurs valeurs d'annotation 36

Chapitre 6: Apache Commons Lang 38

Examples 38

Implémenter la méthode equals () 38

Implémenter la méthode hashCode () 38

Implémentez la méthode toString () 39

Chapitre 7: API de réflexion 41

Introduction 41

Remarques 41

Performance 41

Examples 41

introduction 41

Invoquer une méthode 43

Champs Obtenir et définir 43

Appel constructeur 45

Obtenir l'objet constructeur 45

Nouvelle instance utilisant un objet constructeur 45

Obtenir les constantes d'une énumération 45

Obtenir la classe en fonction de son nom (entièrement qualifié) 46

Appeler les constructeurs surchargés en utilisant la réflexion 47

Mauvaise utilisation de l'API Reflection pour modifier les variables privées et finales 47

Appelez le constructeur de la classe imbriquée 49

Proxies dynamiques 49

Mal Java hacks avec réflexion 51

Chapitre 8: API Stack-Walking 53

Introduction 53

Examples 53
Imprimer tous les cadres de pile du thread en cours 53

Imprimer la classe d'appelant en cours 54

Montrer la réflexion et autres cadres cachés 54

Chapitre 9: AppDynamics et TIBCO BusinessWorks Instrumentation pour une intégration facile 56

Introduction 56

Examples 56

Exemple d'instrumentation de toutes les applications BW en une seule étape pour Appdynamic 56

*** Variables communes. Modifiez-les uniquement. *** 56

Chapitre 10: Autoboxing 58

Introduction 58

Remarques 58

Examples 58

Utilisation de int et Integer indifféremment 58

Utilisation de booléen dans l'instruction if 59

Unboxing automatique peut conduire à NullPointerException 60

Mémoire et surcharge de calcul de l'autoboxing 60

Différents cas où Integer et int peuvent être utilisés indifféremment 61

Chapitre 11: BigDecimal 63

Introduction 63

Examples 63

Les objets BigDecimal sont immuables 63

Comparer les BigDecimals 63

Opérations mathématiques avec BigDecimal 63

1.Addition 63

2.Subtraction 64

3. Multiplication 64

4.Division 64

5. Reste ou module 65

6. puissance 65

7.Max 66

8.Min 66
9.Move Point To Left 66

10.Move Point To Right 66

Utiliser BigDecimal au lieu de float 67

BigDecimal.valueOf () 68

Initialisation de BigDecimals avec la valeur zéro, un ou dix 68

Chapitre 12: BigInteger 69

Introduction 69

Syntaxe 69

Remarques 69

Examples 70

Initialisation 70

Comparer les BigIntegers 71

Exemples d'opérations mathématiques BigInteger 72

Opérations de logique binaire sur BigInteger 74

Générer des BigIntegers aléatoires 75

Chapitre 13: Bit Manipulation 77

Remarques 77

Examples 77

Emballage / Déballage des valeurs en tant que fragments de bits 77

Vérification, configuration, effacement et basculement des bits individuels. Utiliser long 78

Exprimer le pouvoir de 2 78

Vérifier si un nombre est une puissance de 2 79

Classe java.util.BitSet 81

Décalage signé ou non signé 82

Chapitre 14: BufferedWriter 83

Syntaxe 83

Remarques 83

Examples 83

Ecrire une ligne de texte dans File 83

Chapitre 15: ByteBuffer 85

Introduction 85
Syntaxe 85

Examples 85

Utilisation de base - Création d'un ByteBuffer 85

Utilisation de base - Écrire des données dans le tampon 86

Utilisation de base - Utilisation de DirectByteBuffer 86

Chapitre 16: Bytecode Modification 88

Examples 88

Qu'est-ce que Bytecode? 88

Quelle est la logique derrière cela? 88

Eh bien, il doit y avoir plus de droit? 88

Comment puis-je écrire / modifier le bytecode? 88

J'aimerais en savoir plus sur le bytecode! 89

Comment éditer des fichiers jar avec ASM 89

Comment charger un ClassNode en tant que classe 92

Comment renommer les classes dans un fichier jar 92

Javassist Basique 93

Chapitre 17: Calendrier et ses sous-classes 95

Remarques 95

Examples 95

Création d'objets de calendrier 95

Champs de calendrier croissants / décroissants 95

Trouver AM / PM 96

Retrait des calendriers 96

Chapitre 18: Chargeurs de Classes 97

Remarques 97

Examples 97

Instancier et utiliser un chargeur de classe 97

Implémentation d'un classLoader personnalisé 97

Chargement d'un fichier .class externe 98

Chapitre 19: Chiffrement RSA 101

Examples 101
Un exemple utilisant un cryptosystème hybride composé de OAEP et GCM 101

Chapitre 20: Choisir des collections 106

Introduction 106

Examples 106

Organigramme des collections Java 106

Chapitre 21: Classe - Réflexion Java 107

Introduction 107

Examples 107

Méthode getClass () de la classe Object 107

Chapitre 22: Classe de propriétés 108

Introduction 108

Syntaxe 108

Remarques 108

Examples 109

Chargement des propriétés 109

Les fichiers de propriétés indiquent les espaces vides: 109

Enregistrement des propriétés en XML 112

Chapitre 23: Classe EnumSet 114

Introduction 114

Examples 114

Enum Set Example 114

Chapitre 24: Classe immuable 115

Introduction 115

Remarques 115

Examples 115

Règles pour définir des classes immuables 115

Exemple sans références mutables 115

Exemple avec des références mutables 116

Quel est l'avantage de l'immuabilité? 117

Chapitre 25: Classe locale 118

Introduction 118
Examples 118

Classe locale 118

Chapitre 26: Classes et Objets 119

Introduction 119

Syntaxe 119

Examples 119

Classe la plus simple possible 119

Membre d'objet vs membre statique 119

Méthodes de surcharge 120

Construction et utilisation d'objets de base 121

Constructeurs 124

Initialisation des champs finaux statiques à l'aide d'un initialiseur statique 125

Expliquer ce qu'est la surcharge et la dérogation de la méthode. 125

Chapitre 27: Classes imbriquées et internes 129

Introduction 129

Syntaxe 129

Remarques 129

Terminologie et classification 129

Différences sémantiques 130

Examples 130

Une pile simple utilisant une classe imbriquée 130

Classes imbriquées statiques et non statiques 131

Modificateurs d'accès pour les classes internes 133

Classes internes anonymes 134

Constructeurs 135

Méthode Classes internes 135

Accéder à la classe externe à partir d'une classe interne non statique 136

Créer une instance de classe interne non statique depuis l'extérieur 137

Chapitre 28: Clonage d'objets 138

Remarques 138

Examples 138

Clonage à l'aide d'un constructeur de copie 138


Clonage en implémentant l'interface Clonable 139

Cloner en effectuant une copie superficielle 139

Cloner en effectuant une copie en profondeur 140

Clonage à l'aide d'une fabrique de copies 141

Chapitre 29: Code officiel Oracle standard 142

Introduction 142

Remarques 142

Examples 142

Conventions de nommage 142

Noms de paquets 142

Noms de classe, d'interface et d'énumération 142

Noms de méthode 143

Les variables 143

Variables de type 143

Les constantes 143

Autres directives sur le nommage 144

Fichiers source Java 144

Caractères spéciaux 144

Déclaration de colis 144

Déclarations d'importation 145

Importations de caractères génériques 145

Structure de classe 145

Ordre des membres de la classe 145

Groupement des membres du groupe 146

Modificateurs 146

Échancrure 147

Déclarations d'emballage 147

Déclarations de méthode d'emballage 148

Expressions d'emballage 149

Espace blanc 149

Espaces verticaux 149


Espaces horizontaux 150

Déclarations variables 150

Annotations 150

Expressions lambda 151

Parenthèses redondantes 152

Littéraux 152

Bretelles 152

Formes courtes 153

Chapitre 30: Collections 154

Introduction 154

Remarques 154

Examples 155

Déclaration d'un ArrayList et ajout d'objets 155

Construire des collections à partir de données existantes 156

Collections standard 156

Framework Java Collections 156

Cadre des collections Google Goyave 156

Collections de cartographie 157

Framework Java Collections 157

Cadre Apache Commons Collections 157

Cadre des collections Google Goyave 157

Joindre des listes 158

Supprimer des éléments d'une liste dans une boucle 158

INCORRECT 158

Suppression en itération de for la déclaration Ignore « Banana »: 159

Retrait dans l'instruction améliorée for Throws Exception: 159

CORRECT 159

Retrait en boucle en utilisant un Iterator 159

Itérer en arrière 160

Itérer en avant, ajuster l'indice de boucle 161

Utiliser une liste "à supprimer" 161


Filtrage d'un flux 161

Utiliser removeIf 161

Collection non modifiable 162

Itération sur les collections 162

Itérer sur la liste 162

Itération sur Set 163

Itérer sur la carte 164

Collections vides immuables 164

Collections et valeurs primitives 165

Suppression des éléments correspondants des listes à l'aide de l'itérateur. 165

Créer votre propre structure Iterable à utiliser avec Iterator ou pour chaque boucle. 166

Piège: exceptions de modification concurrentes 168

Sous collections 169

List subList (int fromIndex, int toIndex) 169

Définir le sous-ensemble (fromIndex, toIndex) 169

Map subMap (fromKey, toKey) 170

Chapitre 31: Collections alternatives 171

Remarques 171

Examples 171

Apache HashBag, Guava HashMultiset et Eclipse HashBag 171

1. Utilisation de SynchronizedSortedBag d'Apache : 171

2. En utilisant TreeBag d'Eclipse (GC) : 172

3. Utilisation de LinkedHashMultiset depuis Guava : 172

Plus d'exemples: 173

Multimap dans les collections Goyave, Apache et Eclipse 173

Nore exemples: 176

Comparer les opérations avec les collections - Créer des collections 176

Comparer les opérations avec les collections - Créer des collections 176

Chapitre 32: Collections concurrentes 182

Introduction 182

Examples 182
Collections à filetage sécurisé 182

Collections concurrentes 182

Thread safe mais exemples non concurrents 184

Insertion dans ConcurrentHashMap 184

Chapitre 33: Commandes d'exécution 186

Examples 186

Ajout de crochets d'arrêt 186

Chapitre 34: Comparable et Comparateur 187

Syntaxe 187

Remarques 187

Examples 188

Trier une liste en utilisant Comparable ou un comparateur 188

Comparateurs basés sur l'expression lambda 191

Méthodes par défaut du comparateur 191

Inverser l'ordre d'un comparateur 191

Les méthodes de comparaison et de comparaison 191

Tri naturel (comparable) vs explicite (comparateur) 192

Tri des entrées de la carte 193

Création d'un comparateur à l'aide de la méthode de comparaison 194

Chapitre 35: Comparaison C ++ 195

Introduction 195

Remarques 195

Classes définies dans d'autres constructions # 195

Défini dans une autre classe 195

C ++ 195

Java 195

Définie statiquement dans une autre classe 195

C ++ 196

Java 196

Défini dans une méthode 196

C ++ 196
Java 196

Dérogation vs surcharge 197

Polymorphisme 197

Ordre de Construction / Destruction 197

Nettoyage d'objet 197

Méthodes et classes abstraites 198

Modificateurs d'accessibilité 198

Exemple C ++ Friend 199

Le problème des diamants redoutés 199

Classe java.lang.Object 199

Collections Java & Conteneurs C ++ 199

Organigramme des collections Java 199

Organigramme des conteneurs C ++ 199

Types entiers 199

Examples 200

Membres de la classe statique 200

Exemple C ++ 200

Exemple Java 201

Classes définies dans d'autres constructions 201

Défini dans une autre classe 201

C ++ 201

Java 201

Définie statiquement dans une autre classe 201

C ++ 202

Java 202

Défini dans une méthode 202

C ++ 202

Java 202

Pass-by-value & Pass-by-reference 203

Exemple C ++ (code complet) 203


Exemple Java (code complet) 203

Héritage vs composition 204

Downcasting Outcast 204

Exemple C ++ 204

Exemple Java 204

Méthodes et classes abstraites 204

Méthode abstraite 204

C ++ 204

Java 205

Classe abstraite 205

C ++ 205

Java 205

Interface 205

C ++ 205

Java 205

Chapitre 36: Compilateur Java - 'javac' 206

Remarques 206

Examples 206

La commande 'javac' - démarrer 206

Exemple simple 206

Exemple avec des packages 207

Compiler plusieurs fichiers à la fois avec 'javac'. 208

Options «javac» couramment utilisées 209

Les références 209

Compiler pour une version différente de Java 209

Compiler l'ancien Java avec un compilateur plus récent 209

Compiler pour une plate-forme d'exécution plus ancienne 210

Chapitre 37: Compilateur Just in Time (JIT) 212

Remarques 212

Histoire 212

Examples 212
Vue d'ensemble 212

Chapitre 38: CompletableFuture 215

Introduction 215

Examples 215

Convertir la méthode de blocage en asynchrone 215

Exemple simple de CompletableFuture 216

Chapitre 39: Console I / O 217

Examples 217

Lecture des entrées utilisateur depuis la console 217

Utilisation de BufferedReader : 217

Utilisation du Scanner : 217

En utilisant System.console : 218

Implémentation du comportement de base de la ligne de commande 219

Alignement des chaînes dans la console 220

Exemples de chaînes de format 221

Chapitre 40: Constructeurs 222

Introduction 222

Remarques 222

Examples 222

Constructeur par défaut 222

Constructeur avec arguments 223

Appeler le constructeur parent 224

Chapitre 41: Conversion de type 226

Syntaxe 226

Examples 226

Coulée primitive non numérique 226

Coulée primitive numérique 226

Coulée d'objets 227

Promotion numérique de base 227

Tester si un objet peut être converti en utilisant instanceof 227

Chapitre 42: Conversion vers et à partir de chaînes 229

Examples 229
Conversion d'autres types de données en chaîne 229

Conversion en / des octets 229

Base64 Encoding / Decoding 230

Analyse de chaînes à une valeur numérique 231

Obtenir un `String` à partir d'un` InputStream` 232

Conversion d'une chaîne en d'autres types de données 233

Chapitre 43: Cordes 235

Introduction 235

Remarques 235

Examples 236

Comparaison de chaînes 236

N'utilisez pas l'opérateur == pour comparer des chaînes 237

Comparaison de chaînes dans une déclaration de commutateur 237

Comparaison de chaînes avec des valeurs constantes 238

Classement des chaînes 239

Comparaison avec des chaînes internes 239

Changer la casse des caractères dans une chaîne 240

Recherche d'une chaîne dans une autre chaîne 241

Obtenir la longueur d'une chaîne 242

Sous-supports 243

Obtenir le nième personnage dans une chaîne 244

Séparateur de lignes indépendant de la plate-forme 244

Ajout de la méthode toString () pour les objets personnalisés 244

Fendre les cordes 246

Joindre des chaînes avec un délimiteur 248

Cordes d'inversion 249

Compter les occurrences d'une sous-chaîne ou d'un caractère dans une chaîne 249

Concaténation de chaînes et StringBuilders 250

Remplacement de pièces de chaînes 252

Correspondance exacte 252

Remplacez un seul caractère par un autre caractère unique: 252


Remplacez la séquence de caractères par une autre séquence de caractères: 252

Regex 252

Remplacer toutes les correspondances: 253

Remplacez le premier match uniquement: 253

Supprimer les espaces au début et à la fin d'une chaîne 253

Stockage de pool de chaînes et de tas 254

Commutateur insensible à la casse 256

Chapitre 44: Créer des images par programme 257

Remarques 257

Examples 257

Créer une image simple par programmation et l'afficher 257

Enregistrer une image sur le disque 258

Spécification de la qualité de rendu de l'image 258

Création d'une image avec la classe BufferedImage 260

Modification et réutilisation d'image avec BufferedImage 261

Définition de la couleur d'un pixel individuel dans BufferedImage 262

Comment mettre à l'échelle une image tamponnée 262

Chapitre 45: Date classe 264

Syntaxe 264

Paramètres 264

Remarques 264

Examples 265

Créer des objets Date 265

Comparaison d'objets Date 266

Calendrier, Date et LocalDate 266

avant, après, compareTo et égale les méthodes 266

isBefore, isAfter, compareTo et est égal à des méthodes 267

Comparaison de dates avant Java 8 268

Depuis Java 8 268

Conversion de date en un certain format de chaîne 269

Conversion de chaîne en date 270

Une sortie de date de base 270


Convertir la représentation de chaîne formatée de la date en objet Date 271

Créer une date spécifique 271

Objets Java 8 LocalDate et LocalDateTime 272

Fuseaux horaires et java.util.Date 273

Convertissez java.util.Date en java.sql.Date 273

Heure locale 274

Chapitre 46: Dates et heure (java.time. *) 276

Examples 276

Manipulations de date simples 276

Date et l'heure 276

Opérations sur les dates et les heures 277

Instant 277

Utilisation de différentes classes d'API Date Time 277

Formatage de la date et de l'heure 279

Calculer la différence entre 2 LocalDates 280

Chapitre 47: Démonter et décompiler 281

Syntaxe 281

Paramètres 281

Examples 282

Affichage du bytecode avec javap 282

Chapitre 48: Déploiement Java 289

Introduction 289

Remarques 289

Examples 289

Créer un fichier JAR exécutable à partir de la ligne de commande 289

Création de fichiers JAR, WAR et EAR 290

Création de fichiers JAR et WAR à l'aide de Maven 291

Création de fichiers JAR, WAR et EAR à l'aide d'Ant 291

Création de fichiers JAR, WAR et EAR à l'aide d'un IDE 291

Création de fichiers JAR, WAR et EAR à l'aide de la commande jar . 291

Introduction à Java Web Start 292

Conditions préalables 292


Un exemple de fichier JNLP 293

Configuration du serveur Web 293

Activation du lancement via une page Web 294

Lancer des applications Web Start à partir de la ligne de commande 294

Créer un UberJAR pour une application et ses dépendances 294

Créer un UberJAR en utilisant la commande "jar" 294

Création d'un UberJAR à l'aide de Maven 295

Les avantages et inconvénients des UberJAR 295

Chapitre 49: Des applets 297

Introduction 297

Remarques 297

Examples 297

Applet Minimal 297

Créer une interface graphique 298

Ouvrir des liens depuis l'applet 299

Chargement d'images, audio et autres ressources 299

Charger et afficher une image 300

Charger et lire un fichier audio 300

Charger et afficher un fichier texte 300

Chapitre 50: Des listes 302

Introduction 302

Syntaxe 302

Remarques 302

Examples 303

Trier une liste générique 303

Créer une liste 305

Opérations d'accès positionnel 306

Itérer sur les éléments d'une liste 308

Suppression d'éléments de la liste B présents dans la liste A 308

Recherche d'éléments communs entre 2 listes 309

Convertir une liste d'entiers en une liste de chaînes 309

Créer, ajouter et supprimer un élément d'une liste de tableaux 310


Remplacement sur place d'un élément List 310

Rendre une liste non modifiable 311

Déplacement d'objets dans la liste 311

Liste d'implémentation des classes - Avantages et inconvénients 312

Classes implémentant la liste 312

Avantages et inconvénients de chaque mise en œuvre en termes de complexité temporelle 313

ArrayList 313

AttributeList 314

CopyOnWriteArrayList 314

LinkedList 314

Liste de rôles 314

RoleUnresolvedList 315

Empiler 315

Vecteur 315

Chapitre 51: Documentation du code Java 316

Introduction 316

Syntaxe 316

Remarques 317

Examples 317

Documentation de classe 317

Méthode Documentation 318

Documentation de terrain 318

Documentation du package 319

Liens 319

Construction de Javadocs à partir de la ligne de commande 321

Documentation du code en ligne 321

Extraits de code dans la documentation 322

Chapitre 52: Douilles 324

Introduction 324

Examples 324

Lire depuis socket 324

Chapitre 53: Editions Java, versions, versions et distributions 325


Examples 325

Différences entre les distributions Java SE JRE ou Java SE JDK 325

Java Runtime Environment 325

Kit de développement Java 325

Quelle est la différence entre Oracle Hotspot et OpenJDK 326

Différences entre Java EE, Java SE, Java ME et JavaFX 327

Les plates-formes de langage de programmation Java 327

Java SE 327

Java EE 327

Java ME 328

Java FX 328

Versions Java SE 328

Historique de la version Java SE 328

Faits saillants de la version Java SE 329

Chapitre 54: Encapsulation 331

Introduction 331

Remarques 331

Examples 331

Encapsulation pour maintenir les invariants 331

Encapsulation pour réduire le couplage 332

Chapitre 55: Encodage de caractère 334

Examples 334

Lecture de texte à partir d'un fichier encodé en UTF-8 334

Écrire du texte dans un fichier en UTF-8 334

Obtenir la représentation en octets d'une chaîne dans UTF-8 335

Chapitre 56: Ensembles 336

Examples 336

Déclarer un HashSet avec des valeurs 336

Types et utilisation des ensembles 336

HashSet - Tri aléatoire 336

LinkedHashSet - Ordre d'insertion 336


TreeSet - Par compareTo() ou Comparator 337

Initialisation 337

Bases de Set 338

Créer une liste à partir d'un ensemble existant 339

Éliminer les doublons en utilisant Set 340

Chapitre 57: Enum Carte 341

Introduction 341

Examples 341

Enum Map Book Exemple 341

Chapitre 58: Enum commençant par numéro 342

Introduction 342

Examples 342

Enum avec le nom au début 342

Chapitre 59: Enums 343

Introduction 343

Syntaxe 343

Remarques 343

Restrictions 343

Conseils & Astuces 343

Examples 344

Déclarer et utiliser un enum de base 344

Enums avec des constructeurs 347

Utiliser des méthodes et des blocs statiques 349

Implémente l'interface 350

Enum Polymorphism Pattern 351

Enums avec des méthodes abstraites 352

Documenter les enums 352

Obtenir les valeurs d'un enum 353

Enum comme paramètre de type borné 354

Obtenir un enum constant par nom 354

Implémenter le modèle Singleton avec une énumération à un seul élément 355

Enum avec des propriétés (champs) 355


Convertir enum en String 356

Convertir en utilisant le name() 356

Convertir en utilisant toString() 356

Par défaut: 357

Exemple de dépassement 357

Enum corps spécifique constant 357

Zéro instance enum 359

Enums avec des champs statiques 359

Comparer et contient les valeurs Enum 360

Chapitre 60: Envoi de méthode dynamique 362

Introduction 362

Remarques 362

Examples 362

Dynamic Method Dispatch - Exemple de code 362

Chapitre 61: Évaluation XPath XML 365

Remarques 365

Examples 365

Évaluation d'un NodeList dans un document XML 365

Analyse de plusieurs expressions XPath en un seul XML 366

Analyse unique de XPath Expression plusieurs fois dans un XML 366

Chapitre 62: Exceptions et gestion des exceptions 368

Introduction 368

Syntaxe 368

Examples 368

Prendre une exception avec try-catch 368

Attrapez avec un bloc catch 368

Prise d'essai avec plusieurs prises 369

Blocs d'interception multi-exception 370

Lancer une exception 370

Chaîne d'exception 371

Exceptions personnalisées 372

La déclaration d'essayer avec les ressources 374


Qu'est ce qu'une ressource? 374

L'énoncé de base de try-with-resource 374

Les instructions try-with-resource améliorées 375

Gestion de plusieurs ressources 375

Équivalence d'essais avec ressources et d'essais classiques 376

Création et lecture de stacktraces 377

Impression d'un stacktrace 377

Comprendre un stacktrace 378

Chaînage des exceptions et empilements imbriqués 379

Capturer une stacktrace en tant que chaîne 380

Traitement des exceptions interrompues 381

La hiérarchie des exceptions Java - Exceptions non vérifiées et vérifiées 382

Exceptions vérifiées et non vérifiées 383

Exemples d'exceptions vérifiés 384

introduction 385

Retour d'instructions dans le bloc try catch 387

Fonctionnalités avancées des exceptions 388

Examiner le callstack par programmation 388

Optimiser la construction des exceptions 389

Effacer ou remplacer le stacktrace 390

Suppression d'exceptions 390

Les instructions try-finally et try-catch-finally 390

Essayez-enfin 391

essayer-enfin 391

La clause 'throws' dans une déclaration de méthode 392

Quel est l'intérêt de déclarer des exceptions non vérifiées comme levées? 393

Les jetons et la méthode 393

Chapitre 63: Expressions 395

Introduction 395

Remarques 395

Examples 395

Priorité de l'opérateur 395


Expressions constantes 397

Utilisations pour les expressions constantes 397

Ordre d'évaluation des expressions 398

Exemple simple 399

Exemple avec un opérateur qui a un effet secondaire 399

Les bases de l'expression 399

Le type d'une expression 400

La valeur d'une expression 401

Déclarations d'expression 401

Chapitre 64: Expressions lambda 402

Introduction 402

Syntaxe 402

Examples 402

Utilisation des expressions lambda pour trier une collection 402

Tri des listes 402

Tri des cartes 403

Introduction aux Java Lambda 404

Interfaces fonctionnelles 404

Expressions lambda 405

Retours implicites 406

Accès aux variables locales (fermetures de valeur) 406

Accepter les Lambdas 407

Le type d'une expression lambda 407

Références de méthode 408

Référence de la méthode d'instance (à une instance arbitraire) 408

Référence de la méthode d'instance (à une instance spécifique) 409

Référence de méthode statique 409

Référence à un constructeur 409

Cheat-Sheet 410

Implémentation de plusieurs interfaces 410

Lambdas et motif d'exécutions 411


Utiliser l'expression lambda avec votre propre interface fonctionnelle 411

`return` ne renvoie que de la méthode lambda, pas de la méthode externe 412

Fermetures Java avec des expressions lambda. 414

Lambda - Exemple d'écoute 415

Style traditionnel au style Lambda 416

Lambdas et utilisation de la mémoire 417

Utilisation d'expressions lambda et de prédicats pour obtenir une ou plusieurs valeurs dan 417

Chapitre 65: Expressions régulières 419

Introduction 419

Syntaxe 419

Remarques 419

Importations 419

Pièges 419

Symboles importants expliqués 419

Lectures complémentaires 420

Examples 420

Utilisation de groupes de capture 420

Utilisation de regex avec un comportement personnalisé en compilant le modèle avec des ind 421

Caractères d'échappement 422

Correspondant à un littéral regex. 422

Ne correspondant pas à une chaîne donnée 423

Correspondant à une barre oblique inverse 423

Chapitre 66: Fichier I / O 425

Introduction 425

Examples 425

Lecture de tous les octets dans un octet [] 425

Lecture d'une image à partir d'un fichier 425

Ecrire un octet [] dans un fichier 425

API Stream vs Writer / Reader 426

Lire un fichier entier à la fois 427

Lecture d'un fichier avec un scanner 428

Itérer sur un répertoire et filtrer par extension de fichier 428


Migration de java.io.File vers Java 7 NIO (java.nio.file.Path) 429

Pointez sur un chemin 429

Chemins relatifs à un autre chemin 429

Conversion de fichier depuis / vers un chemin pour une utilisation avec des bibliothèques 429

Vérifiez si le fichier existe et supprimez-le s'il le fait 430

Ecrire dans un fichier via un OutputStream 430

Itération sur chaque fichier dans un dossier 430

Itération du dossier récursif 431

Lecture / écriture de fichier à l'aide de FileInputStream / FileOutputStream 432

Lecture d'un fichier binaire 433

Verrouillage 433

Copier un fichier en utilisant InputStream et OutputStream 434

Lecture d'un fichier à l'aide du canal et du tampon 434

Copier un fichier avec Channel 436

Lecture d'un fichier à l'aide de BufferedInputStream 436

Ecrire un fichier en utilisant Channel and Buffer 437

Ecrire un fichier en utilisant PrintStream 437

Itérer sur un sous répertoire répertoires d'impression 438

Ajouter des répertoires 438

Blocage ou redirection de la sortie / erreur standard 439

Accéder au contenu d'un fichier ZIP 440

Lecture d'un fichier existant 440

Créer un nouveau fichier 440

Chapitre 67: Fichiers JAR multi-versions 441

Introduction 441

Examples 441

Exemple de contenu de fichier Jar multi-version 441

Créer un Jar multi-release à l'aide de l'outil JAR 441

URL d'une classe chargée dans un Jar multi-release 443

Chapitre 68: Files d'attente et deques 444

Examples 444
L'utilisation de PriorityQueue 444

LinkedList en tant que file FIFO 444

Piles 445

Qu'est-ce qu'un Stack? 445

API de pile 445

Exemple 445

BlockingQueue 446

Interface de file d'attente 447

Deque 448

Ajouter et accéder aux éléments 449

Suppression d'éléments 449

Chapitre 69: FileUpload vers AWS 450

Introduction 450

Examples 450

Télécharger le fichier dans le compartiment s3 450

Chapitre 70: FilLocal 453

Remarques 453

Examples 453

Initialisation fonctionnelle de ThreadLocal Java 8 453

Utilisation de base de ThreadLocal 453

Plusieurs threads avec un objet partagé 455

Chapitre 71: Fonctionnalités de Java SE 8 457

Introduction 457

Remarques 457

Examples 457

Nouvelles fonctionnalités du langage de programmation Java SE 8 457

Chapitre 72: Fonctionnalités Java SE 7 459

Introduction 459

Remarques 459

Examples 459

Nouvelles fonctionnalités du langage de programmation Java SE 7 459


Littéraux binaires 459

La déclaration d'essayer avec les ressources 460

Underscores dans les littéraux numériques 460

Type Inference pour la création d'instance générique 461

Strings in switch Déclarations 461

Chapitre 73: Format de nombre 463

Examples 463

Format de nombre 463

Chapitre 74: Fractionner une chaîne en parties de longueur fixe 464

Remarques 464

Examples 464

Briser une chaîne en sous-chaînes de longueur connue 464

Briser une chaîne en sous-chaînes de longueur variable 464

Chapitre 75: FTP (protocole de transfert de fichiers) 465

Syntaxe 465

Paramètres 465

Examples 465

Connexion et connexion à un serveur FTP 465

Chapitre 76: Génération de code Java 471

Examples 471

Générer un POJO à partir de JSON 471

Chapitre 77: Génération de nombres aléatoires 472

Remarques 472

Examples 472

Nombres aléatoires 472

Nombres aléatoires dans une plage spécifique 472

Génération de nombres pseudo-aléatoires sécurisés par cryptographie 473

Sélectionner des nombres aléatoires sans doublons 474

Génération de nombres aléatoires avec une graine spécifiée 475

Générer un nombre aléatoire en utilisant apache-common lang3 475

Chapitre 78: Génériques 477

Introduction 477
Syntaxe 477

Remarques 477

Examples 477

Créer une classe générique 477

Extension d'une classe générique 478

Paramètres de type multiple 480

Déclaration d'une méthode générique 480

Le diamant 481

Nécessitant plusieurs bornes supérieures ("étend A & B") 482

Créer une classe générique limitée 483

Décider entre `T`,`? super T`, et `? étend T` 484

Avantages de la classe et de l'interface génériques 485

Contrôles de type plus forts au moment de la compilation 486

Elimination des moulages 486

Permettre aux programmeurs d'implémenter des algorithmes génériques 486

Liaison du paramètre générique à plus de 1 type 486

Remarque: 487

Instancier un type générique 487

Solutions de contournement 487

Se référant au type générique déclaré dans sa propre déclaration 488

Utilisation de instanceof avec Generics 489

Différentes manières d'implémenter une interface générique (ou d'étendre une classe généri 491

Utilisation de génériques pour la diffusion automatique 492

Obtenir une classe qui vérifie le paramètre générique à l'exécution 493

Chapitre 79: Gestion de la mémoire Java 495

Remarques 495

Examples 495

Finalisation 495

Les finaliseurs ne s'exécutent qu'une seule fois 495

Déclenchement manuel du GC 496

Collecte des ordures 496


L'approche C ++ - new and delete 496

L'approche Java - garbage collection 497

Que se passe-t-il lorsqu'un objet devient inaccessible 498

Exemples d'objets accessibles et inaccessibles 498

Réglage de la taille du tas, du permGen et de la pile 499

Fuites de mémoire en Java 500

Les objets accessibles peuvent fuir 500

Les caches peuvent être des fuites de mémoire 501

Chapitre 80: Getters et Setters 503

Introduction 503

Examples 503

Ajout de getters et de setters 503

Utiliser un setter ou un getter pour implémenter une contrainte 504

Pourquoi utiliser des getters et des setters? 504

Chapitre 81: Graphiques 2D en Java 507

Introduction 507

Examples 507

Exemple 1: Dessiner et remplir un rectangle à l'aide de Java 507

Exemple 2: Dessin et remplissage ovale 509

Chapitre 82: Hashtable 510

Introduction 510

Examples 510

Hashtable 510

Chapitre 83: Héritage 511

Introduction 511

Syntaxe 511

Remarques 511

Examples 511

Classes abstraites 511

Héritage statique 513

Utiliser 'final' pour restreindre l'héritage et remplacer 514


Classes finales 514

Cas d'utilisation pour les classes finales 515

Méthodes finales 515

Le principe de substitution de Liskov 516

Héritage 517

Méthodes d'héritage et de statique 518

Ombrage variable 519

Rétrécissement et élargissement des références d'objet 519

Programmation à une interface 521

Classe abstraite et utilisation de l'interface: relation "Is-a" vs capacité "Has-a" 523

Passer outre dans l'héritage 526

Chapitre 84: Heure locale 528

Syntaxe 528

Paramètres 528

Remarques 528

Examples 528

Modification du temps 528

Les fuseaux horaires et leur décalage horaire 529

Durée entre deux heures locales 529

Introduction 530

Chapitre 85: HttpURLConnection 532

Remarques 532

Examples 532

Obtenir le corps de la réponse à partir d'une URL en tant que chaîne 532

Données POST 533

Comment ça marche 534

Supprimer une ressource 534

Comment ça marche 534

Vérifier si la ressource existe 535

Explication: 535

Exemple: 535

Chapitre 86: Implémentations du système de plug-in Java 536


Remarques 536

Examples 536

Utiliser URLClassLoader 536

Chapitre 87: InputStreams et OutputStreams 541

Syntaxe 541

Remarques 541

Examples 541

Lecture de InputStream dans une chaîne 541

Écrire des octets dans un OutputStream 541

Fermeture des cours d'eau 542

Copier le flux d'entrée vers le flux de sortie 543

Emballage des flux d'entrée / sortie 543

Combinaisons utiles 543

Liste des wrappers de flux d'entrée / sortie 544

Exemple DataInputStream 544

Chapitre 88: Installation de Java (Standard Edition) 546

Introduction 546

Examples 546

Définition de% PATH% et% JAVA_HOME% après l'installation sous Windows 546

Hypothèses: 546

Étapes de configuration 546

Vérifie ton travail 547

Sélection d'une version Java SE appropriée 547

Nom de la version Java et de la version 548

De quoi ai-je besoin pour le développement Java 549

Installation d'un Java JDK sous Linux 549

Utilisation du gestionnaire de packages 549

Installation à partir d'un fichier Oracle Java RPM. 551

Installation d'un Java JDK ou JRE sous Windows 551

Installation d'un Java JDK sur macOS 553

Configurer et changer les versions Java sur Linux en utilisant des alternatives 554

Utiliser des alternatives 554


Installations basées sur Arch 555

Liste des environnements installés 555

Changer l'environnement actuel 555

Vérification et configuration post-installation sous Linux 555

Installer oracle java sur Linux avec le dernier fichier tar 557

Production attendue: 558

Chapitre 89: Interface de l'outil JVM 559

Remarques 559

Examples 559

Itérer sur les objets accessibles depuis l'objet (Heap 1.0) 559

Obtenez l'environnement JVMTI 561

Exemple d'initialisation à l'intérieur de la méthode Agent_OnLoad 562

Chapitre 90: Interface Dequeue 563

Introduction 563

Remarques 563

Examples 563

Ajout d'éléments à Deque 563

Enlever des éléments de Deque 563

Récupérer un élément sans le supprimer 564

Itérer à travers Deque 564

Chapitre 91: Interface Fluent 565

Remarques 565

Examples 565

Vérité - Cadre de test courant 565

Style de programmation fluide 565

Chapitre 92: Interface native Java 568

Paramètres 568

Remarques 568

Examples 568

Appel des méthodes C ++ à partir de Java 568

Code Java 569

Code C ++ 569
Sortie 570

Appeler les méthodes Java à partir de C ++ (rappel) 570

Code Java 570

Code C ++ 571

Sortie 571

Obtenir le descripteur 571

Chargement de bibliothèques natives 572

Recherche de fichier cible 572

Chapitre 93: Interfaces 574

Introduction 574

Syntaxe 574

Examples 574

Déclaration et implémentation d'une interface 574

Implémentation de plusieurs interfaces 575

Extension d'une interface 576

Utiliser des interfaces avec des génériques 577

Utilité des interfaces 579

Implémentation d'interfaces dans une classe abstraite 581

Méthodes par défaut 581

Implémentation du modèle d'observateur 581

Problème de diamant 582

Utiliser les méthodes par défaut pour résoudre les problèmes de compatibilité 583

Modificateurs dans les interfaces 584

Les variables 584

Les méthodes 584

Renforcer les paramètres de type borné 585

Chapitre 94: Interfaces fonctionnelles 587

Introduction 587

Examples 587

Liste des interfaces fonctionnelles standard de Java Runtime Library par signature 587

Chapitre 95: Invocation de méthode distante (RMI) 590


Remarques 590

Examples 590

Client-Server: appel de méthodes dans une JVM à partir d'une autre 590

Callback: invoquer des méthodes sur un "client" 592

Vue d'ensemble 592

Les interfaces distantes partagées 592

Les implémentations 593

Exemple simple de RMI avec implémentation client et serveur 596

Package de serveur 596

Package client 598

Testez votre application 599

Chapitre 96: Itérateur et Iterable 600

Introduction 600

Remarques 600

Examples 600

Utiliser Iterable en boucle 600

Utiliser l'itérateur brut 600

Créer votre propre Iterable. 601

Suppression d'éléments à l'aide d'un itérateur 602

Chapitre 97: Java Native Access 604

Examples 604

Introduction à la JNA 604

Qu'est ce que la JNA? 604

Comment puis-je l'utiliser? 604

Où aller maintenant? 605

Chapitre 98: Java Virtual Machine (JVM) 606

Examples 606

Ce sont les bases. 606

Chapitre 99: JavaBean 607

Introduction 607

Syntaxe 607
Remarques 607

Examples 608

Bean Java Basique 608

Chapitre 100: JAXB 609

Introduction 609

Syntaxe 609

Paramètres 609

Remarques 609

Examples 609

Ecriture d'un fichier XML (regroupement d'un objet) 609

Lecture d'un fichier XML (désarchivage) 610

Utilisation de XmlAdapter pour générer le format xml souhaité 611

Configuration automatique du mappage de champs / propriétés (@XmlAccessorType) 612

Configuration manuelle du champ / propri