Niveau de connaissances requis pour comprendre l'article : débutant. Vous êtes en train d'étudier la quête Java Syntax, et vous vous rapprochez de ses niveaux initiaux.
Vous venez de commencer à apprendre Java. Vous êtes bombardé de termes comme s’ils provenaient d’une corne d’abondance. Vous êtes chargé de tonnes d'informations techniques et parfois vous vous perdez dans trois pins. Croyez-moi, puisque vous vous êtes déjà impliqué dans la programmation, CE SERA TOUJOURS AINSI (à ce moment, un rire menaçant retentit hors écran, et une voix calme, coupée au milieu d'une phrase, murmure « Courez... sauvez-vous avant c'est trop tard..."). Les bugs vous hanteront pour le reste de votre vie de programmeur, même si vous êtes le meilleur développeur. Cependant, ce n’est pas du tout aussi effrayant qu’il y paraît.
Si vous venez de commencer à apprendre JavaRush, vous avez probablement déjà rencontré les problèmes évoqués dans l'article. Dans tous les cas, nous serions heureux de recevoir des commentaires décrivant les problèmes que vous avez rencontrés au cours de vos premiers mois d'apprentissage de Java. |
Problème de niveau 0 : Confusion avec l'opérateur de comparaison (==) et l'opérateur d'affectation (=).
Il s'agit d'un problème très courant pour ceux qui quittent d'autres langages de programmation. Et en général, depuis l'école primaire, nous nous sommes habitués au fait qu'il
(=)
s'agit d'un signe égal. Une astuce simple qui peut être utilisée pour se souvenir est la suivante : si vous savez que vous ne vous souciez que d'une des valeurs (vous en attribuez une à l'autre), vous utilisez un seul
=
signe " ", sinon si vous vous souciez de toutes les variables et les valeurs (vous les comparez) vous avez besoin d'un double
==
signe " ".
Problème : Utilisation de l'opérateur de comparaison (==) pour tester l'équivalence de chaîne
Que faire : N'oubliez pas
qu'aucun objet Java ne peut être vérifié pour l'équivalence à l'aide de(==)
, puisque cet opérateur est conçu pour tester l'égalité des types primitifs.
Pour les objets, vous devez utiliser le
.equals()
. Et
String
dans le langage Java, ce n'est rien de plus qu'un objet (et
immutable
).
Un objet marqué comme Immutable est un objet dont l'état ne peut pas être modifié après sa création. En Java , cela signifie que tous les champs d'instance d'une classe sont marqués comme final et sont des primitives (ou également immutable ). |
Problème : concaténation de chaînes dans une boucle
N'essayez pas cela vous-même ! Chaque fois que des chaînes sont concaténées, un nouvel objet est créé
String
(comme nous l'avons découvert ci-dessus, les chaînes
immutable
sont immuables). À un moment donné, vous manquerez de mémoire ou le programme commencera à prendre trop de temps.
Solution. Utilisez
StringBuilder
-le plutôt
String
lors de la concaténation de contenu dans une boucle. La classe
StringBuilder
est utilisée lorsque vous devez apporter de nombreuses modifications à une chaîne de caractères. Et de telles lignes, contrairement à
String
, ne le sont pas
immutable
.
Problème : NullPointerException
Ce type d'exception se produit lorsque nous essayons d'utiliser un pointeur nul
null
alors qu'en fait nous avons besoin d'un objet réel.
Tous les types primitifs ont des valeurs par défaut. Donc, y int est 0 , et y boolean est false . La valeur par défaut de tout type de référence, c'est-à-dire des objets, est null . Ce n'est pas un objet ou un type, c'est une valeur spéciale. Ce qui signifie essentiellement « il n’y a rien ici ». |
Que faire : Si votre code est écrit de telle manière qu'à un moment donné votre objet peut accepter la valeur
null
, vous devez ajouter une « vérification de
null
», surtout si vous ne créez pas l'objet vous-même. N'oubliez pas non plus qu'il est préférable de renvoyer des collections vides plutôt qu'un ensemble de
null
. Ce serait également bien d'ajouter une validation pour les getters et les setters.
Problème : pour une raison quelconque, la boucle if / while / for ne fonctionne pas
if (something.equals («что-то еще»)); {
System.out.println («Почему я не работаю???»);
}
Qu'est-ce qui ne va pas ici ? C'est simple : un point-virgule supplémentaire a gâché le sang de centaines de milliers de programmeurs Java novices. Eh bien, vous n'en avez plus besoin après
if ()
. Du point de vue du langage, une telle syntaxe est tout à fait acceptable, le compilateur ne s'en plaindra donc pas. Mais cela met fin à l’instruction conditionnelle et le code à l’intérieur du bloc
{}
ne satisfera jamais à la condition ci-dessus.
Solution : rappelez-vous la logique de conception. Le
;
signe « » signifie la fin d'un certain bloc, mais ici tout ne fait que commencer.
Problème : tentative d'accès à des variables membres non statiques à partir de méthodes statiques (telles que main)
Solution . Ce problème est lié à la compréhension du concept lui-même
static
. Si une méthode est marquée de ce mot, cela signifie que nous n'avons pas besoin d'instancier la classe pour appeler la méthode principale. La solution est donc d’avoir une bonne compréhension de la « statique » et de comprendre leur essence.
Problème : Essayer de réinventer la roue en développant des bibliothèques et des outils déjà existants
Solution. Ce n'est en fait pas vraiment un problème. Pour un débutant, c’est plutôt un exercice utile. Cependant, si vous souhaitez vous concentrer sur le résultat, par exemple en créant une base de données d'abonnés pratique, la recherche d'un abonné dans l'annuaire téléphonique n'est que l'un des résultats de votre candidature. Dans ce cas, il n’est pas nécessaire d’écrire un algorithme de recherche binaire. Utilisez-en un existant (on vous l'assure, quelqu'un l'a déjà écrit avant vous et il est dans les bibliothèques standards). Étudiez donc les bibliothèques standard Java dans la documentation Oracle. Apprenez à Google, habituez-vous à lire Stack Overflow et posez des questions sur
l'aide de JavaRush ! ...Bien sûr, ce ne sont pas tous les problèmes des débutants. Décrivez le vôtre dans les commentaires !
Êtes-vous intéressé à lire des articles sur Java ? Rejoignez le groupe de développeurs Java .
Il y a beaucoup de choses intéressantes ici.
GO TO FULL VERSION