Sur cette page
Tutoriel Java : guides pratiques pour les problèmes Java du quotidien
Java est un langage orienté objet à typage statique qui s’exécute sur la JVM — le même code alimente des backends d’entreprise, des applications Android et des systèmes bancaires. La plupart des gens l’apprennent comme ils l’utilisent : un problème concret à la fois. Cette page est la carte des plus de 1 000 guides Java pratiques de DelftStack. Les guides sont regroupés ci-dessous selon la tâche que vous cherchez à accomplir — raccourcir des chaînes, décoder une erreur de compilation, additionner un tableau, lire des fichiers — et chaque groupe s’ouvre sur des guides sélectionnés par la rédaction qui répondent aux questions les plus fréquentes des lecteurs. Si vous écrivez votre premier programme Java, commencez par le parcours d’apprentissage ; si vous êtes arrivé avec une erreur ou une tâche précise, allez directement au groupe qui lui correspond.
Le parcours d’apprentissage Java
Vous n’avez pas besoin de lire 1 000 guides dans l’ordre. Un itinéraire fiable consiste à commencer par les chaînes et les caractères, parce que tout programme manipule du texte, puis à apprendre comment les tableaux et les listes stockent les données, puis à ajouter les utilitaires du quotidien — dates, nombres aléatoires, fichiers — et seulement ensuite à consacrer du temps sérieux aux erreurs de compilation et aux concepts orientés objet comme la liaison. Java récompense cet ordre : une fois que vous savez ce que le code cherche à exprimer, les messages d’erreur stricts du compilateur deviennent lisibles. Considérez les étapes ci-dessous comme une liste de contrôle ; quand une étape vous semble facile, passez à la suivante.
- Commencez par le texte. Apprenez à obtenir le dernier caractère d’une chaîne et à convertir une chaîne en char — la manipulation des
charapparaît dans presque tous les programmes de débutant. - Les données de base. Additionnez un tableau et initialisez les éléments d’un tableau à zéro ; c’est avec les tableaux que les boucles et les index deviennent évidents.
- Les tâches quotidiennes. Afficher la date du jour, générer un nombre aléatoire, lire tous les fichiers d’un dossier : les groupes dates et fichiers ci-dessous couvrent ce travail quotidien.
- Corrigez les erreurs. Quand le compilateur refuse votre code, le guide identifier expected et les autres guides d’erreurs vous montrent comment trouver la cause au lieu de deviner.
- Allez plus loin. Voyez en quoi la liaison statique et la liaison dynamique diffèrent, ou construisez une première fenêtre avec un constructeur d’interface graphique.
Après le parcours, utilisez cette page comme référence : chaque groupe ci-dessous est autonome, et l’index alphabétique complet sous chaque section énumère les plus de 1 000 guides, y compris la longue traîne que les listes sélectionnées ne peuvent pas couvrir.
Chaînes et caractères
Le travail sur le texte en Java commence par un fait déroutant : une String est un objet et un char est un primitif, et passer de l’un à l’autre embrouille tout le monde au début. Lisez les deux premiers guides comme une paire — ils couvrent le même caractère final sous deux angles opposés. L’un montre comment lire le dernier caractère d’une chaîne ; l’autre, référencé partout dans le premier, montre comment le supprimer, ce que vous voulez habituellement quand vous retirez un délimiteur ou un saut de ligne final. Ensuite, les guides sur les char règlent les questions de déclaration : ce qu’un char contient par défaut, pourquoi il ne peut pas être null, et comment une chaîne entière devient un tableau de char quand vous devez la traiter lettre par lettre.
- Obtenir le dernier caractère d’une chaîne en Java — Lisez le caractère final de trois façons :
charAt()pour unchar,substring()pour une chaîne d’un seul caractère, ou une conversion en tableau de caractères. - Supprimer le dernier caractère d’une chaîne en Java — Le pendant en suppression du guide ci-dessus : retirez le caractère final avec
substring()oureplaceFirst(), ou avecremoveEnd()etchop()de Commons Lang sous Java 8+. - Initialiser un char en Java — Déclarez un
charavec une valeur vide, comprenez pourquoinullne s’applique pas aux primitifs, et connaissez la valeur par défaut'\u0000'avec laquelle les champs démarrent. - Convertir une chaîne en char en Java — Prenez un seul caractère avec
charAt(), tout le contenu avectoCharArray(), et voyez oùgetBytes()a sa place — et où il ne l’a pas.
Erreurs, exceptions et dépannage
Une erreur du compilateur Java est une plainte précise, mais seulement une fois que vous savez quelle hypothèse elle signale. Le guide ci-dessous couvre l’une des erreurs que vous rencontrez dès que vos propres classes grandissent — un opérateur appliqué aux mauvais types. Apprendre à lire ce signalement, plutôt que de modifier le code au hasard jusqu’à ce qu’il passe, est ce qui transforme un message cryptique en correction rapide.
- Corriger l’erreur bad operand types en Java — Passez en revue les signalements
bad operand typepour&,&&,==et<=: types d’opérandes incompatibles et pièges de précédence des opérateurs, cas par cas.
Tableaux et collections
Les tableaux sont la première structure de données de Java et celle sur laquelle toutes les autres collections s’appuient ; ce groupe commence donc par les deux opérations que vous écrirez le plus : tout additionner et tout ramener à une valeur de départ connue. Le guide sur la somme fait aussi office de visite du style Java moderne — la même boucle écrite avec les streams montre à quel point le langage a changé. Le guide sur la remise à zéro répond à une question qui surprend les programmeurs C : Java initialise déjà les éléments des tableaux pour vous, et les méthodes explicites servent à réinitialiser un tableau déjà utilisé. Le guide sur le tri est le pont vers le travail réel, où ce sont des objets — et non des primitifs — qu’il faut ordonner selon un champ comme une date.
- Obtenir la somme d’un tableau en Java — Totalisez un tableau d’
intavec une simple bouclefor, ou avec les streams :Arrays.stream(...).sum(),reduceetIntStream.of(...).sum(). - Initialiser tous les éléments d’un tableau à zéro en Java — Réinitialisez un tableau avec une boucle,
Arrays.fill(),nCopies(), une réaffectation ouArrays.setAll()— et sachez quand la mise à zéro par défaut de Java le fait déjà pour vous. - Trier des objets dans une ArrayList par date en Java — Ordonnez des objets personnalisés selon leur champ date de trois façons :
Comparable,Collections.sort()etlist.sort()avec un comparateur.
Conversion de types et opérateurs
Le système de types de Java est strict, ce qui fait des conversions et des opérateurs une source permanente de questions pour débutants. La plus recherchée porte sur une fonctionnalité absente : les programmeurs venant de JavaScript ou de Python cherchent typeof, et la réponse de Java — demander à l’objet sa classe d’exécution — révèle la façon dont le langage conçoit les types. Le guide sur != traite une faute de frappe célèbre aux conséquences réelles : inversés, les caractères cessent d’être une comparaison et deviennent une affectation assortie d’une négation. Lisez le guide sur le modulo pour les nombres négatifs, où le % de Java et Math.floorMod() divergent réellement, et le guide de conversion quand un Object doit devenir un int et que la bonne méthode dépend de ce que l’objet contient réellement.
- Obtenir la classe d’exécution d’un objet en Java (la question typeof) — Java n’a pas d’opérateur
typeof: utilisezgetClass()pour demander à un objet sa classe d’exécution, y compris les cas de classes enveloppes qui piègent les comparaisons. - La différence entre
!=et=!en Java —!=compare deux valeurs pour vérifier leur inégalité ;=!n’est pas un opérateur du tout — dansa = !b, il affecte le booléen nié, une faute de frappe qui compile et qui trompe. - Le modulo en Java — Calculez les restes avec l’opérateur
%, et passez àMath.floorMod()quand des opérandes négatifs doivent donner un résultat non négatif. - Convertir un Object en int en Java — Transformez un
Objectenintvia l’enveloppeInteger,Number.intValue()ouInteger.parseInt()— en choisissant selon ce que l’objet contient réellement.
Dates, nombres aléatoires et utilitaires
Ce petit groupe convertit mieux que tous les autres de la page : chaque guide répond à une question courte et précise. Les guides sur les dates montrent une bibliothèque en transition — les anciennes classes java.util.Date et Calendar remplissent encore le code existant, tandis que java.time (LocalDate, LocalDateTime, ZonedDateTime) est ce que vous devriez écrire aujourd’hui, et les guides indiquent lequel est lequel. Le guide sur l’aléatoire couvre les trois générateurs et le moment où chacun convient. L’effacement de la console et le délai sont les utilitaires dont tout programme en ligne de commande finit par avoir besoin — avec des avertissements honnêtes, parce que Java cache délibérément le terminal et parce qu’une pause bloquante est parfois le mauvais outil.
- Générer un nombre aléatoire entre 1 et 10 en Java — Tirez une valeur inclusive entre 1 et 10 avec
java.util.Random,Math.random()ouThreadLocalRandom— et sachez lequel choisir en contexte concurrent. - Obtenir la date du jour en Java — La date du jour avec
java.util.Date, ou les modernesLocalDate,LocalDateTimeetZonedDateTimequand le fuseau horaire compte. - Obtenir l’année en cours en Java — Lisez l’année en cours via
LocalDate,Calendar,Date,YearMonthou Joda Time, d’une date complète jusqu’à un simple entier. - Effacer la console en Java — Effacez le terminal avec des séquences d’échappement ANSI ou une commande du système d’exploitation via
ProcessBuilder, après avoir vérifié ce que votre terminal et votre système d’exploitation prennent en charge. - Introduire un délai de quelques secondes en Java — Faites une pause avec
Thread.sleep()ouTimeUnit.sleep(), et planifiez plutôt que bloquer avecScheduledExecutorServicequand d’autres tâches doivent continuer.
E/S de fichiers et propriétés
Le code fichiers en Java suit une même forme — localiser, lire ou configurer — et ces guides couvrent deux de ses formes quotidiennes. Lire un dossier va d’un simple listage à plat à un parcours récursif complet, et le guide ordonne les approches selon la profondeur de votre arborescence. Le guide sur les properties ferme le groupe : les fichiers .properties restent la manière dont les programmes Java reçoivent leur configuration — paramètres de base de données, drapeaux de fonctionnalités, valeurs d’environnement — et les lecteurs hispanophones arrivent justement à la recherche de ce flux de travail.
- Lire tous les fichiers d’un dossier en Java — Listez et lisez un répertoire avec la classe
Files,newDirectoryStream(), ou unwalkFileTree()récursif pour les dossiers imbriqués. - Le fichier properties en Java — Créez un fichier
.properties, définissez des valeurs, relisez une propriété unique, et énumérez toutes les clés et valeurs que le fichier contient.
GUI et JavaFX
L’histoire du bureau en Java est ancienne et toujours très recherchée, portée par une seule question — comment construire une fenêtre sans écrire le code de mise en page de chaque bouton. La réponse honnête est que Swing reste le framework de la plupart du code existant, JavaFX est la boîte à outils plus récente, et dans les deux cas un constructeur visuel change le travail : au lieu de positionner les composants dans le code, on les dispose sur un canevas et on câble les événements. Commencez par le guide du constructeur si vous maintenez ou démarrez une application Swing ; les autres guides du groupe, dans l’index ci-dessous, sont les prolongements pour des contrôles et des événements précis. Le guide sélectionné de ce groupe n’existe pour le moment qu’en anglais ; vous trouverez donc dans cette section le texte du guide seul, et les autres guides se consultent depuis l’index ci-après.
Classes et méthodes
Ce groupe est délibérément sélectif. Le guide ci-dessous débloque un sujet plus vaste : la liaison répond à une question conceptuelle que les entretiens et les examens adorent, parce qu’elle décide quelle méthode s’exécute réellement — le choix fait à la compilation à partir du type de la référence, ou celui fait à l’exécution à partir de l’objet lui-même. Lisez le guide sur la liaison en gardant le groupe des erreurs à l’esprit : une bonne part de la confusion sur les méthodes introuvables tient en réalité à un malentendu sur la liaison.
- Liaison statique et liaison dynamique en Java — La liaison à la compilation pour les méthodes surchargées et statiques, contre la liaison à l’exécution pour les méthodes redéfinies, avec des exemples indiquant quel appel se résout à quel moment.
Questions fréquemment posées
Qu’est-ce qui provoque l’erreur « identifier expected » en Java ?
Le compilateur est arrivé à un endroit où la grammaire exige un nom — de variable, de méthode ou de paramètre — et a trouvé autre chose à la place. Les causes habituelles sont une instruction écrite directement dans le corps de la classe plutôt que dans une méthode, un paramètre déclaré sans son type, une accolade mal placée qui termine une méthode trop tôt, ou une ressource déclarée incorrectement dans un try-with-resources. Lisez la ligne qu’il désigne, puis vérifiez ce qui la précède immédiatement. Le guide identifier expected passe chaque cause en revue avec une liste de contrôle à appliquer avant de recompiler.
Comment générer un nombre aléatoire entre 1 et 10 en Java ?
Créez un Random et appelez nextInt(10) + 1 : nextInt(10) renvoie 0–9, donc le décalage rend l’intervalle inclusif aux deux extrémités. Pour un usage ponctuel rapide, (int) (Math.random() * 10) + 1 fait le même travail, et dans le code concurrent, ThreadLocalRandom.current().nextInt(1, 11) évite les contentions — notez que sa borne supérieure est exclusive. Le guide sur les nombres aléatoires compare les trois approches et leurs intervalles.
Existe-t-il un typeof en Java ?
Non — Java n’a pas d’opérateur typeof. Les équivalents les plus proches sont obj.getClass(), qui renvoie la classe d’exécution de l’objet, et instanceof, qui teste si un objet appartient à un type ou à l’un de ses sous-types. Celui qu’il vous faut dépend de la question : getClass() répond à « qu’est-ce que c’est, exactement ? », tandis qu’instanceof répond à « puis-je le traiter comme l’un de ceux-ci ? ». Les objets enveloppes ajoutent une subtilité, puisqu’un Integer déclare Integer.class, jamais int. Le guide sur la classe d’exécution montre les deux, avec les cas des enveloppes.
Comment suspendre l’exécution pendant quelques secondes en Java ?
Appelez Thread.sleep(3000) pour mettre le thread courant en pause pendant trois secondes, et gérez l’InterruptedException qu’il déclare — attrapez-la ou laissez-la se propager. TimeUnit.SECONDS.sleep(3) exprime le même délai dans une unité nommée et se lit mieux dans du code relu. Si le thread a d’autres choses à faire, ne le bloquez pas du tout : planifiez l’étape différée avec ScheduledExecutorService. Le guide sur les délais couvre à la fois les appels bloquants et la voie de la planification.
Pourquoi l’installation de Java échoue-t-elle avec « errors in the following switches » ?
Ce message Windows signifie généralement qu’un fichier .jar a été transmis à l’installateur ou au lanceur Java avec des commutateurs qu’il ne comprend pas — le plus souvent parce que l’association des fichiers .jar pointe vers le mauvais exécutable, de sorte qu’un double-clic sur un programme déclenche une erreur de type installation. Faites pointer l’association vers javaw.exe, puis testez le même JAR depuis l’invite de commandes pour séparer un problème d’association d’un téléchargement corrompu. Réinstaller Java n’aide que lorsque le lanceur lui-même est manquant ou endommagé. Le guide sur les commutateurs d’installation passe les vérifications dans l’ordre.
Étapes suivantes
Deux groupes ci-dessus sont en train de devenir des sous-guides dédiés : Erreurs, exceptions et dépannage, où les lecteurs arrivent avec des problèmes urgents et où le groupe identifier expected se comporte déjà comme un sujet à part entière, et Chaînes et caractères, le groupe le plus cliqué de cette collection. En attendant leur arrivée, les sections ci-dessus sont les points d’entrée. Pour un langage à typage dynamique ou un autre écosystème, continuez avec les guides pratiques Python ou les guides pratiques C#.