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: