Ak s programovaním v Jave práve začínate, je prirodzené, že sa občas dopustíte chýb. Dobrou správou je, že väčšina z nich sa opakuje u takmer každého nováčika. V tomto článku si predstavíme 5 najčastejších chýb, ktoré brzdia váš pokrok — a naučíme vás, ako sa im vyhnúť.
Jednou z najčastejších chýb je používanie premennej bez jej inicializácie. V Jave totiž musíte každú premennú najskôr deklarovať a až potom použiť.
// CHYBA: premenná nie je inicializovaná int vek; System.out.println(vek); // chyba pri kompilácii
Ďalšou častou chybou je nesprávny typ premennej. Napríklad:
String cislo = 25; // CHYBA: typ String nie je kompatibilný s int
Riešenie: vždy inicializujte premenné a používajte typ, ktorý zodpovedá požadovanej hodnote. Pomáha tiež dodržiavať pomenovacie konvencie a neprepísať si vlastné premenne napríklad menami tried ako String alebo Integer.
Cykly sú základom mnohých programov, no zlá podmienka alebo zabudnutý inkrementátor môže viesť k nekonečnej slučke:
// CHYBA: cyklus nikdy neskončí
int i = 0;
while (i < 5) {
System.out.println(i);
// chyba: i sa nezvyšuje
}
Ďalšou častou chybou je používanie operátorov ako = namiesto == v podmienkach:
// CHYBA: priradenie namiesto porovnania
if (a = 5) {
// ...
}
Riešenie: vždy kontrolujte, či sa cyklus niekam posúva a že porovnávacie podmienky sú správne zapísané.
Jednou z najznámejších výnimiek v Jave je NullPointerException, ktorá vznikne, keď sa pokúsite použiť objekt, ktorý nebol inicializovaný.
String meno = null; System.out.println(meno.length()); // NullPointerException
Riešenie: pred použitím objektu ho vždy inicializujte alebo aspoň overte, že nie je null.
if (meno != null) {
System.out.println(meno.length());
}
S nástupom novších verzií Javy môžete použiť aj Optional alebo výraz Objects.requireNonNull() na zníženie rizika.
Ak sa snažíte získať prístup k neexistujúcemu indexu v poli alebo zozname, program skončí chybou.
int[] cisla = {1, 2, 3};
System.out.println(cisla[3]); // CHYBA: Index 3 neexistuje
Java indexuje od 0, preto posledný prvok poľa s veľkosťou 3 má index 2.
Riešenie: skontrolujte rozsah pomocou cisla.length alebo použite for-each cyklus:
for (int cislo : cisla) {
System.out.println(cislo);
}
Začiatočníci často zbytočne vytvárajú nové objekty aj vtedy, keď by mohli použiť existujúce:
String a = new String("Test");
String b = new String("Test");
Tým sa zbytočne zaťažuje pamäť a garbage collector. Lepšou možnosťou je využívať internovanie reťazcov:
String a = "Test"; String b = "Test"; // odkazuje na ten istý objekt
Ďalšou chybou je neuzatváranie zdrojov ako sú súbory, sockety alebo databázové spojenia.
try (Scanner sc = new Scanner(System.in)) {
// bezpečne použiteľné – uzatvorí sa automaticky
}
Vyskúšajte kurz JAVASE1 – Programovanie v JAVA SE: Syntax jazyka JAVA, kde vás naučíme písať čistý, správny a efektívny Java kód bez zbytočných chýb. Kurz je ideálny pre úplných začiatočníkov.
Viac informacií preberáme na kurze: