Ak sa učíte programovať v Jave, je dôležité porozumieť tomu, ako Java narába s premennými, typmi a pamäťou. Základný rozdiel medzi primitívnymi a referenčnými typmi vám pomôže vyhnúť sa bežným chybám, ako je NullPointerException. V tomto článku vám vysvetlíme všetko od základov.
Java podporuje dva základné druhy dátových typov:
int
– celé čísla (napr. int x = 10;
)double
– desatinné čísla (napr. double pi = 3.14;
)boolean
– pravda/nepravda (true
alebo false
)char
– jeden znak (napr. 'A'
)String
– reťazce znakovPerson osoba = new Person();
)Primitívne typy sú efektívne, rýchle a využívajú menej pamäte. Referenčné typy však umožňujú pracovať s komplexnými dátami, ako sú zoznamy, objekty alebo stromy.
V Jave každý objekt existuje v heap pamäti, a keď ho priradíte premennému, priraďujete len referenciu (odkaz) na tento objekt – podobne ako smerník (pointer) v iných jazykoch.
String meno = "Eva";
V tomto prípade premenná meno
neuchováva reťazec „Eva“, ale len adresu v pamäti, kde sa tento reťazec nachádza. Ak vytvoríte druhú premennú a priradíte jej túto referenciu, obe budú odkazovať na ten istý objekt:
String a = "Eva"; String b = a;
Zmena v jednom objekte môže ovplyvniť druhý, ak sa pracuje s mutovateľnými triedami (napr. ArrayList
).
null
znamená, že referenčná premenná neodkazuje na žiaden objekt. Ak sa pokúsite volať metódu alebo pristúpiť k atribútu cez null
, vznikne výnimka NullPointerException.
String meno = null; System.out.println(meno.length()); // Výsledok: NullPointerException
Aby ste sa tomu vyhli, používajte kontrolu:
if (meno != null) { System.out.println(meno.length()); }
V modernej Jave (od verzie 8) možno použiť aj triedu Optional
pre bezpečnejšie narábanie s potenciálne prázdnymi hodnotami.
Pretypovanie znamená zmenu typu premennej. Java robí rozdiel medzi implicitným a explicitným castingom.
int a = 10; double b = a; // Implicitný casting double x = 9.7; int y = (int) x; // Explicitný casting, hodnota bude 9
Pri explicitnom pretypovaní môže dôjsť k strate dát – napr. desatinná časť sa odstráni. Preto je vhodné pretypovanie používať opatrne, najmä pri operáciách s presnosťou (napr. v matematike alebo financiách).
Premenné v Jave musia byť pred použitím inicializované. Java rozlišuje:
public class Auto { String znacka; // inštančná premenná void vypis() { int vek = 5; // lokálna premenná System.out.println(vek); } }
Ak sa pokúsite použiť neinicializovanú lokálnu premennú, kompilátor v Jave vás na to upozorní.
Vyskúšajte kurz JAVASE1 – Programovanie v JAVA SE: Syntax jazyka JAVA, v ktorom vás naučíme všetko od základov jazyka Java až po efektívne používanie typov, objektov a metód. Kurz je ideálny pre začiatočníkov a pre všetkých, ktorí chcú pochopiť, ako Java naozaj funguje.
Viac informacií preberáme na kurze: