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