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: