Professional Documents
Culture Documents
Java Pre Začiatočníkov
Java Pre Začiatočníkov
👨💻
Java pre začiatočníkov
Created September 23, 2020 7:43 PM
Languages Java
Materials Empty
Reviewed
Základy
Komentáre
Dokumentačný:
/**
*Documentation comment
1 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
*/
line comment
/* multi line
comment
*/
Premenné
int (typ) number (názov) = 240; (hodnota)
Zobrazenie v pamäti:
• metóda (method)
2 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
• Person
Camel case: Lepšie čitateľné!
• firstName
• isThisNumber
• returnPerson
• getPerson
Typy premenných
3 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Pretypovanie premenných
byte b = (byte) i; - do premennej b (byte), vloží premennú i, ktorú
pretypuje na byte (to v zátvorke). Môže dôjsť k skresleniam.
Výrazy
Vytvorené pomocou premenných , operátorov, volaní metód.
i—
—i
4 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Príkazy - statements
3 druhy:
• declaration statements
• expression statements
◦ Príklady:
◦ List
5 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Booleanovské výrazy
Podmienka If()
≥
Pri jednom riadku nemusia byť kučeravé zátvorky, pri bloku musia.
Odporúča sa používať vždy kučeravé.
Ternárny operátor
Podobá sa na IF ELSE
výraz ? výraz1 : výraz2 - ak je podmienka(výraz) pravda, splní sa výraz1,
ak nie, splní sa výraz2
While a Do While
"do while" najprv vykoná vec a potom sa pýta na podmienku. "while"
musím mať podmienku aby vôbec začal.
Switch
Vyzerá takto:
6 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Enum
Vytvára sa pod triedou alebo New → Java Class → Kind → Enum. Sú to
enumeračné typy ("Iba veľkými písmenami napísane nejaké názvy").
Ukončujú sa bodkočiarkou.
Keď ho ideme použiť v kóde, názov ENUM (napr. Day) používame ako
určenie typu premennej (namiesto int, String,...).
7 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Triedy a objekty
Trieda je akoby predpis pre náš objekt. Trieda má nejaké premenné.
Obsahuje aj nejaké funkcie (metódy - void). Keď vytvárame nový objekt,
tak vytvárame inštanciu triedy. Nový objekt sa vytvára pomocou "new"
za tým názov objektu so zátvorkami.
Metódy
Metódy triedy - Ak je metóda static void, nepotrebujem vytvoriť objekt
aby som zavolal tú funkciu, čiže funkcia patrí triede, to isté platí pre
premenné.
Metódy objektové/inštančné - voláme ich keď si vytvoríme nový objekt
a voláme ich cez bodku
Na to aby premenná patrila triede musí mať pred sebou static, bez neho
patrí len metóde.
8 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Vnútri metódy môžme volať ďalšiu metódu. Výstup musí byť rovnaký int
-int, inak treba pretypovať.
Dve metódy môžu mať rovnaký názov pokiaľ majú iné parametre.
Pozerá na parametre aj na ich poradie. (preťažovanie metód).
V Jave je jedno kde sa definuje metóda.
Premenné
Všetky premenné musia niekomu patriť (triede/metóde/objektu). Ak je
premenná deklarovaná v triede mimo metód, tak je viditeľná vo
všetkých metódach.
9 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Zatienenie
Ak máme premennú triedy a v metóde máme premennú s tým istým
menom, tak tá v metóde zatieni tú v triede. (bude platiť tá vnútri
metódy, nie tá ktorá patrí triede)
Použitie
V statickej metóde (main) môžme zavoalť statické metódy len ich
názvom(alebo Trieda.názov), nemusíme vytvárať žiaden objekt. Ak som
v rámci triedy, nemusím dávať Trieda.názov, stačí len názov, v iných
triedach musím použiť Trieda.názov.
Polia
Je to referenčný dátový typ (v pamäti sa otvára odkaz).
Deklarácia:
• int[] pole;
10 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
• int[] pole;
• String[] poleStringov;
• Pes[] poleObjektovPes;
• pole[1]
Viacrozmerné polia
Počet hranatých zátvoriek určuje koľko rozmerov má pole.
11 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Funguje to ako klasické polia, kde začíname prvým rozmerom, (4) budú
miesta v ktorých sú odkazy na pole s druhýmn rozmerom (2). Môžeš si
to predstaviť aj ako tabuľku, kde riadky sú prvý rozmer a stĺpce sú
druhý rozmer, čiže i,j (0,1) bude prvý riadok a druhý stĺpec.
Poliam nemusím zadeklarovať dĺžku. Môžme ju priradiť dynamicky. V
tomto prípade bude priraďovať vždy o jednu veľkosť poľa viac, čiže od 1
po 4. (4 kvôli veľkosti prvého poľa).
Output:
12 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
13 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Triedy a objekty
Trieda je vlastne šablóna. Void znamená že metóda nebude nič vracať.
Viem vytvoriť metódu pomocou void , ktorá bude nastavovať nejakú
premennú, v tomto prípade počet nôh. Vnútri sa pomociu this
odkazujem na inštanciu tejto triedy (nie v inej triede ale v našej) a
potom názov premennej a hodnotu. v IJIdea sa rozdeľuje farbami kde sa
odkazujem. return funguje rovnako, takisto určujem pred bodkou v
ktorej triede mám premennú a za bodkou akú premenné vraciam. Kedže
nikde v triede nie je static nemôžem použiť " trieda.metóda ". Aby
to fungovalo bez static musím vytvoriť inštanciu tej triedy (objekt) -
vytvorím si novú premennú typu názvu tej triedy a pomocou new
vytvorím inštanciu tej triedy (ak tam dám objekt ktorý neexistuje s
prázdnymi zátvorkami za tým, tak Java to považuje za bezparametrický
konštruktor, čiže si zkonštruuje objekt tejto triedy.
14 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Private
Ak dáme pred premennú Private tak priamo premenná nebude
prístupná ale ostatné objekty ktoré ju používajú áno. Je to privátne
vrámci tej triedy, v iných nám to fungovať nebude!!!
15 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Public
To isté ako private len je prístupné z vonku pre iné triedy.
"Getrry" a "Settry"
Prakticky tieto funkcie generujú metódy na vrátenie obsahu premennej.
Dajú sa vložiť osobitne alebo aj naraz.
Konštruktory
Zkonštruuje nám objekt našej triedy. Ak chcem vytvárať konštruktor s
nejakými premennými, tak si ho musím vytvoriť sám. Pomocou ⌘ + N
viem vytvoriť Konštruktor, getter, setter atď.
Ak v parametroch(obyčajná zátvorka()) vytvorím premennú tak ju
vezme.
Bezparametrický konštruktor java nevytvorí, ak už taký existuje s tým
istým názvom. Dva s rovnakým názvom definované môžu byť ak nie sú
rovanké parametre a ich poradie. Nepozerá sa na názvy premenných
ale len na poradie (napr. int, int, String).
16 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Preťaženie
Vytváranie konštruktorov alebo metód s rovnakým názvom je
preťaženie. JE to úplne to isté pri metóda ako aj konštruktoroch.
17 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Konštanta - final
Pomocou final spravíme z premennej konštantu.
Rušenie objektov
Vždy keď vytvorím objekt, tak sa vytvorí v pamäti. V Jave nemusím rušiť
nepoužité objekty, stará sa o to sama.
18 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Static blok je určený na naplnenie našeho poľa. Pole máme finálne ale
to sa vzťahuje na jeho veľkosť a nie hodnoty v ňom, preto druhý riadok
v maine bude fungovať ale tretí už nie, pretože v treťom sa pokúšame
vytvoriť nové pole v starom ktoré je final .
Reťazce
Nejaký text je reťazec. Nedá sa zväčšovať / zmenšovať.
19 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
ďalší objekt.
Používanie reťazcov
Môžme konvertovať základné dátove typy na reťazce (napr. int na
String).
20 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Reťazenie
Zapuzdrenie dát
21 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Zapuzdrenie dát
Princíp zapuzdrenia: Dáta, ktoré sa majú zapísať iba v rámci triedy, napr.
ako dátum narodenia, tak sa dávajú do private , ak chceme aby sa dali
tie dáta aspoň zobraziť, musíme si vytvoriť verejnú metódu (v triede kde
sú tie údaje), ktorá bude vraciať tento parameter ( getter ).
22 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Abstraktné triedy
Existuje aj vynútené prekrytie metódy, to spravíme tak že určíme že
rodič bude abstraktná trieda. Vtedy musím overridnuť všetky metódy,
ktoré sú určené ako abstrakt. V rodičovskej triede sa to píše "bez tela"
čiže bez {}. Od triedy ktorá má abstrakt, mnemôžem vytvoriť inštanciu
(new ...).
Prístupové práva
V podstate ide o to, kde sú naše premenné viditeľné.
Existujú:
Private
Nič neuvedené
Protected
Public
23 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Interfacy
Vznikli kvôli tomu že Java neumožňuje viacnásobnú dedičnosť. To
znamená že v jednej triede, nemôžem dediť od viacerých tried, vždy
môžem dediť iba od jendej. Implementovať môžme viacero interfacov.
Považujú sa za prednosť Javy
Rozhranie definuje súbor metód, ktoré nie sú implementované. Trieda
musí implementovať všetky metódy rozhrania. Rozhranie nemôže
deklarovať žiadne premenné, iba konštanty. Rozhranie narozdiel od
dedičnosti nevynucuje príbuzenské vzťahy, iba funkcie.
Pozíva sa tak že v triede si vytvorím override (⌘+N → implement
methods) vyberiem metódy a v inej triede napríklad main, po vytvorení
konštruktora môžem cez bodky pristúpiť k metódam, ktoré boli
vytvorené pomocou rozhrania.
24 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Ak použijem toto,
25 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Operátor instanceoff
Pomocou instanceof dokážem zistiť ktoré rozhrania implementujeme.
26 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Enum
Jednoducho povedané je to zoznam úzko súvisiacich vecí ako napr. dni
v týždni. Je dostupné od JDK 1.5. Ak je člen nejakej triedy tak je
implicitne static (nemusíme použiť inštanciu, čiže new ). Nie je možné
použiť new . Pre porovnanie môžme použiť = . Hodnoty v ENUMe
odďeľujeme čiarkou a na konci bodkočiarkou. Do zátvoriek si môžme
dať nejakú premennú, ktorá nám ich môže reprezentovať.
Naša premenná je poradie, potom je getter na vytiahnutie poradia a
akoby konštruktor, ktorý priradzuje ten int ku dňom.
27 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Exeptions
Napríklad na zachytenie chyby pri delení nulou. Vytvorím ju tak že za
moju metódu hodím throws Exception .
Hierarchia výnimiek:
1. Throwable - najvyššia treida v tej hierarchii exeptions, všetky
28 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
29 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
30 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Ako programovať!
1. Chcem vyriešiť nejaký problém
Polymorfizmus (mnohostrannosť)
Voláme akoby stále rovnakú metódu ale tá robí stále niečo iné. V
polyformizme potomok môže nahradiť predka. To znamená že do
referenčnej premennej pôvodne deklarovanej s typom predka, môžeme
priradiť referenciu na inštanciu potomka. Čiže cez referenčnú premennú
31 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
Príklad predka:
Potomok:
32 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
33 z 34 29/05/2022, 19:21
Java pre začiatočníkov https://citrine-leech-1ef.notion.site/Java-pre-za-iato-n-kov-287bfa8eaec3...
34 z 34 29/05/2022, 19:21