Programatorska
terminologia:
UJJ1: [Ucebnica Jazyka Java (P.Herout)] + Jbuilder 3 (M.Virius)
Obsah:
1. Uvod
2. Historia
3. Zposob spracovania programu v
Jave
4. Komentare v Jave
5. Datove
typy
6. „Escape“
sekvencie
7. Operatory
8. Bitove
operacie
9. Riadiace
struktury
10. Triedy
11. Metody
12. Premenne
13. Polia
14. Triedy
a objekty
15. Rozhranie
16. Vnorene
triedey
17. Retazce
18. Baliky
19. Vynimky
20. Adresare
a subory
21. Citanie
zo vstupov a zapis na vystupy
22. Systemove
akcie
23. Vlakna
24.
Pouzivane pojmy
25.
Teoreticke poznamky
Syntaxia
jazyka Java je velmi podobna syntaxii jazyka C. Lisi sa od semantiky[K1] jazyka C predovsetkym v tom, ze v Jave sa neda priamo pracovat s
pamatou (nemame k dispozicii ukazatele) a vsetky objekty (vratane poli) su
alokovane dynamicky. Java je silne typovany jazyk, tzn. ze kazda premenna musi
mat neaky typ.
Od roku
1991 vyvijala firma Sun Microsystems programovaci jazyk na principoch C a C++
pre bezne elektronicke zariadenia[K2] ovladane zabudovanym mikroprocesorom. Veduci vyvojoveho tymu bol pan
Gosling. Jazyk mal povodny nazov Oak (dub), kedze sa zistilo, ze programovaci
jazyk s takymto nazvom uz existuje, vyvojova skupina ho premenovala na nazov
Java (kava). V roku 1993 si firma uvedomila vzrastajucu dolezitost WWW a
moznosti vyuzit Javu pre programovanie aplikacii pre WWW. V roku 1995 bola Java
oficialne predstavena na konferencii.
3. Zposob spracovania programu v
Jave:
Porovnanie fáz prekladu programu a vykonávania v jazyku C, Java a JavaScripte:
Niektoré konvencie pri písaní zdrojových textov v Jave: (odporúčane[K3] konvencie)
Meno triedy začína veľkým písmenom (FirstApp, ArgsEcho, System, String).
Meno metódy (premennej) začína malým písmenom (out, println, formExit).
Konštanty sa zapisujú veľkými
písmenami (EXIT_ON_CLOSE)
(pozn. analogické[K4] s jazykom C, czn. nemôžu sa vnárať)
pojmy:
Dokumentacny komentar – v zdrojovom kode zacina znakmi /** (vytvori sa dokumentacia vo formate
.html vytvorena programom javadoc.exe)
1. /* ...
... */ - viacriadkový komentár
2. // ... - jednoriadkový komentár
3. /** ...
... */ - dokumentačný komentár, používa sa pre
generovanie dokumentácie použitím programu „javadoc“
Primitivne datove typy[K5]:
Cele cisla: byte, short, int, long
Realne cisla[K6]: float, double
Znaky: char
Logicke hodnoty: boolean
Referencne datove typy[K7]: Triedy,
Rozhrania, Pola
Zakladne datove typy:
Meno triedy |
Zakladny datovy
typ |
Počet bitov |
Popis |
Boolean |
boolean |
1 |
Logicky datovy typ |
Char |
char |
16 |
Znakovy datovy typ |
Byte |
byte |
8 |
Celociselny datovy typ |
Short |
short |
16 |
Celociselny datovy typ |
Int |
int |
32 |
Celociselny datovy typ |
Long |
long |
64 |
Celociselny datovy typ |
Float |
float |
32 |
Realny datovy typ |
Double |
double |
64 |
Realny datovy typ |
Sekvencie |
Hodnota
(unicode) |
Vyznam |
‘\n‘ |
\u000A |
Novy riadok (newline, linefeed – LF) |
‘\r‘ |
\u000D |
Navrat na zaciatok riadku (carriage return – CR) |
‘\t‘ |
\u0009 |
Tabulator (tab – HT) |
‘\b‘ |
\u0008 |
Posun dolava (backspace – BS) |
‘\\‘ |
\u005C |
Zpetne lomitko (backslash) |
‘\‘‘ |
\u002C |
Apostrof (single quote) |
‘\“‘ |
\u0022 |
Uvodzovky (quote) |
‘\f‘ |
\u000C |
Nova stranka (formfeed – FF) |
‘\007‘ |
\u0007 |
Unarne[K9] – kde je iba jeden operand (napr. –3, -i, ++[K10]f, +4, l--[K11], ~[K12]x)
pozn. v pripade pouzitia i++, alebo i-- sa k premennej i pripocita jednotka az po vyhodnoteni
vyrazu, v pripade pouzitia ++i, alebo --i sa k premennej i najprv pripocita jednotka a az potom[K13] sa vyhodnoti vyraz
Binarne[K14] – kde je operator zlava aj s prava obklopeny operandamy (napr. J/4, 5-3, l*f, i%[K15]3)
Operator |
Popis |
+ |
Scitanie |
- |
Odcitanie |
* |
Nasobenie |
/ |
Celociselne a realne delenie |
% |
Delenie modulo (tj. zvysok po celociselnom deleni) |
Ternarne[K16] (trojite) – je zlozeny z dvoch znakov, ktore su z lava a z prava obklopene operandmi (tj.
budu tri operandy, napr. (i>j) ? 3 : 4)
Priradzovacie – zakladny operator priradenia je: ‚=‘
Priradzovacie
operatory |
|
Pouzitie |
Vyznam |
l-hodnota += vyraz |
l-hodnota = l-hodnota + vyraz |
l-hodnota -= vyraz |
l-hodnota = l-hodnota - vyraz |
l-hodnota *= vyraz |
l-hodnota = l-hodnota * vyraz |
l-hodnota /= vyraz |
l-hodnota = l-hodnota / vyraz |
l-hodnota %= vyraz |
l-hodnota = l-hodnota % vyraz |
l-hodnota &= vyraz |
l-hodnota = l-hodnota & vyraz |
l-hodnota ^= vyraz |
l-hodnota = l-hodnota ^ vyraz |
l-hodnota |= vyraz |
l-hodnota = l-hodnota | vyraz |
l-hodnota >>= vyraz |
l-hodnota = l-hodnota >> vyraz |
l-hodnota <<= vyraz |
l-hodnota = l-hodnota << vyraz |
l-hodnota >>>= vyraz |
l-hodnota = l-hodnota >>> vyraz |
Relacne[K17] – pomocou nich vytvarame booleovske vyrazy (napr. a != 6, 3 <= f < 10, i = = 5)
Operator |
Vyznam |
= = |
Rovnost |
!= |
Nerovnost |
& |
|
| |
|
! |
Negacia |
< |
Mensie |
<= |
Mensie alebo rovne |
> |
Vacsie |
>= |
Vacsie alebo rovne |
pojmy:
Operacia – je vyraz tvoreny pomocou operand a operatorov ([K24] 2[K25] +[K26] 3[K27] )[K28]
Booleovska operacia – je tvorena pomocou relacnych operatorov, v pripade pravdivosti vyrazu vracia
hodnotu true (teda 1), v opacnom pripade vracia hodnotu false (teda 0)
one‘s complement – jednickovy doplnok, negacia
Vyrazove prikazy – su vyrazy ukoncene bodkociarkou (napr. b = x + y;)
Bitove operacie vytvarame pomocou nasledujucich binarnych
a unarnych operatorov:
Operator |
Vyznam |
|
|
Bitovy sucet – OR |
|
^ |
Bitovy exkluzivny sucet – XOR (nonekvivalence) |
<< |
|
>> |
|
>>> |
|
~ |
Jednickovy doplnok – negacia bit po bite – (unarny operator) |
pojmy:
Iteracia – jeden priechod cyklom
Podmienkove
prikazy if a if-else:
Neuplna podmienka:
if (booleovsky vyraz)
prikaz;
Uplna
podmienka:
if (booleovsky vyraz)
prikaz
1;
else
prikaz
2;
Podmienkovy prikaz pomocou ternarneho operatora:
(booleovsky_vyraz) ? vyraz 1 : vyraz 2
Cykly – Iteracne
prikazy:
Prikaz while:
while (logickyVyraz) {
prikaz;
}
Prikaz do-while:
do {
prikazy;
}
while (logickyVyraz);
Prikaz for:
for (vyraz_start; vyraz_stop;
vyraz_inter) {
prikaz;
}
Prikaz switch: (tj. prepinac, alebo mnohonasobne
vetvenie programu)
switch (vyraz)
{
case
hodnota_1 : {
prikaz_1;
break;
}
…
case
hodnota_n : {
prikaz_n;
break;
}
default
: {
prikaz_default;
break;
}
}
Navestia:
semsavrat: // za navestim moze nasledovat iba cyklus alebo zlozena zatvorka ‚}‘
pozn. navestie sa vyuziva najme v kombinacii s break ked chceme jednym prikazom vyskocit naraz
z viacerych cyklov
Prikazy break a continue:
break – ihned opusta cyklus
continue – skace na koniec cyklu (tzn.
Preskoci zbytok tela cyklu)
Prikaz return:
return – v hlavnej metode main()
ukoncuje cely program, inak sa casto pouziva na vracanie hodnoty daneho
datoveho typu, ktory urcuje datovy typ pri definicii metody.
pojmy:
Class (trieda) – objektovy (referencny) datovy typ, predstavuje subor premennych a metod[K34]
Wrapper class[K35] – obalujuca trieda, pomocou nej sa moze zakladny datovy typ stat
objektom
Final class – koncova trieda, nemoze byt zdedena
Abstract class – abstraktna trieda, jej pouzitie si vynucuje potomka (tj. musime pristupovat cez potomka),
pri abstraktnych triedach
nemozeme vytvarat ich instancie
pojmy:
Metoda – podprogram, funkcia
Procedura – je metoda bez navratoveho typu
Rekurzivne metody – v tele jej metody vola samu seba
Pretazene metody (overloaded) – maju rovnake mena ale rozne hlavicky, lisia sa poctom, typom, alebo
poradim formalnych parametrov
Final method – finalna metoda, nemoze byt prekryta (pozn. ale moze byt pretazena)
Abstract method – abstraktna metoda, vynucuje si prekrytie (cize zadefinovanie tejto metody v potomku)
Pozdna vezba – ista vlastnost volania metody, ked volame neprekritu metodu z daneho objektu, tak sa
vykona metoda definovana v predkovy.
Staticke metody (metody triedy) – metoda sa vztahuje iba na triedu, nevytvara sa z nej instancia (oznacuje sa klucovym slovom ‚static[K36]‘), taketo metody mozu pouzivat iba staticke premenne.
pozn. kazda staticka metoda je implicitne finalna[K37], tzn. klucove slovo ‚final‘ sa nemusi pisat
Metody instancie – metoda objektu (!bez pouzitia ‚static‘), pouziva sa v OOP[K38], tzn. ze metoda je volatelna
cez objekt a pouzitelna vždy a vsade.
pojmy:
Field (pole, oblast) – v Java Core API sa takto oznacuje premenna
Inicializacia premennej – prve priradenie hodnoty do premennej (samozrejme po deklaracii, tiez. sa deje
priradenie pameti)
Deklaracia premennej – definovanie (zavedenie) premennej
Referencna premenna (odkazujuca) – deklarovana na neprimitivny datovy typ, tzn. na datovy typ triedy,
alebo datovy typ pole (hodnota referencnej premennej je odkaz a v pripade ze jej hodnota je null
znamena, ze neobsahuje ziadny odkaz na ziadny existujuci objekt)
Member variables – clenske premenne, datove zlozky, alebo atributy triedy (su instantne a tiez. explicitne
premenn[K39]e)
Class variables – premenne triedy (tiez. staticke premenne[K40] a su explicitne..)
Implicitne inicializovana premenna – premenna inicializovana v konstruktore (v metode)
Explicitne inicializovana premenna – premenna inicializovana vonku v triede (ako clenska premenna)
Dopredna referencia – ked pouzitie premennej predchadza jej samotnej deklaracii (neplati to však pre
lokalne premenne)
Lokalne (premenne metod) – su deklarovane a viditelne len v tele metody, tiez. implicitna premenna[K41]
Nelokalne (globalne[K42]) – mozu byt staticke (ako premenne triedy), alebo instantne (ako clenske premenne)
+Konstanty – premenne deklarovane pridanim klucoveho slova ‚final‘ (napr. final int MAX = 10;)
pozn.
1. ked sa priradi do premennej neaka hodnota, ktora sa nezmesti do rozsahu typu premennej dojde
2. neinicializovane nelokalne primitivne datove zlozky maju impicitne danu hodnotu 0 a ostatne typy
datovych zloziek hodnotu ‚null‘ (pozn. lokalne premenne deklarovane v tele metod musia byt[K44] pred
pouzitim inicializovane)
pojmy:
Aray – pole, neprimitivny (referencny) datovy typ
Dlzka pola – znamena počet prvkov pola
Deklaracie napr. :
int [] poleInt[K45] = new int [20]; // deklaracia + inicializacia
Prikazom new – sa inicializuje a vyhradi (alokuje) pamet pre pole
Prikaz length – je clenska premenna, pomocou ktorej mozeme zistit dlzku pola
Pozor!
1. Treti prvok jednorozmerneho pola ma index 2, kedze pole vždy zacina od indexu 0
2. napr. pri dvojrozmernom[K46] poli: pole[][], prvy index predstavuje riadky[K47] a druhy index stlpce[K48]
pojmy:
Objekt – ako pojem – je datovy prvok, tiez. kopia triedy (tzn. instancia triedy), ako treida – je zakladny[K49]
rodic vsetkych tried (tj. Object.class)
Default constructor – implicitny konstruktor, automaticky vytvoreny prekladacom, ak neexistuje nas
vlastny, definovany, explicitny konstruktor
Overloading – pretazenie[K50]
Overriding – prekrytie, (prekryt znamena preprogramovat, predefinovat, doplnit, napr. zadefinovat metodu
v potomkovy, ktora uz bola zadefinovana v predkovy[K51])
Hiding – zatienenie (zakrit, napr. instantna premenna zatienena lokalnou premennou[K52], potom však pristup
k instantnej premennej umoznime pomocou this)
Zapuzdrenie – encapsulation,
Perzistentne objekty – su to objekty (cize instancie tried) ulozene na disku
Serialization (serializacia) – ukladanie perzistentnych objektov
Inicializacia objektu pomocou metody – v pripade, ze v danej triede metoda vracia objektovy datovy typ[K53],
mozeme pridelit instanciu (volat objekt) pomocou takejto metody (v ostatnych pripadoch pomocou
new)
Autorizovany pristup k datam – ked zaistime, aby s datami (premennymi) nebolo mozne z vonkajska
triedy manipulovat inak, ako pomocou metod tejto triedy.
Deklaracie napr. :
Obdelnik obd = new Obdelnik ( ); // deklaracia + inicializacia
Deklaracia objektu – len pomocou referencnej premennej deklarovanej na datovy typ triedy
Konstruktor – specialna metoda, ma rovnake meno ako jej trieda, nemá ziadnu navratovu hodnotu a pouziva
sa hlavne na inicializovanie datovych prvkov[K54]
Pretazene konstruktory – plati pre ne to iste ako pre pretazene metody (cize odlisuju sa typom, poctom a
poradim formalnych parametrov)
Prikazom new – sa vytvara instancia triedy (cize objekt)
Prikaz this – odkazuje na instantne premenne a metody triedy
Prikaz private – pristup k premennej, alebo k metode len z danej triedy
Zapuzdrenie dat (data encapsulation) – prvy pilier OOP[K55], def. je to explicitne spojenie dat (cize premennych)
a metod danej konstrukcie triedy, tzn. premenne sa vyskytuju spolocne s metodami, ktore s nimi
manipuluju. Dosledkom zapuzdrenia je Autorizovany pristup k datam.
napr. :
public void setDen (int den) {
this.den = den;
}
public int getDen ( ) {
return den;
}
Dedicnost – druhy pilier OOP, preberanie premennych instancii a metod instancii.
pojmy:
Zakladna trieda – rodicovska trieda, predok, supertrieda (tiez. nadtrieda)
Odvodena trieda – zdedena trieda, potomok, dedic, dcerska trieda (podtrieda, upresnenie triedy predka)
klucove slova:
extends (rozsirenie) – parameter pridavany do hlavicky triedy, a znamena ze trieda bude dedit od
rodicovskej triedy (tzn. prevezme bezozmeny instantne premenne a instantne
metody)
pozn. ak nerozsirime lubovolnu triedu prikazom extnds, tak sa automaticky pouzije
super – klucove slovo, ktorym sa vola konstruktor rodicovskej triedy
Polymorfizmus – treti pilier OOP, mnohotvarnost, volame akoby vždy tu istu metodu a ona prevadza vždy
nieco ine ( najlepsie sa vyuziva pomocou abstraktnych tried, tiez. volanie potomka cez predka)
napr. :
abstract class Zivocich {
String typ;
Zivocich (String typ) { this.typ = new String (typ); }
public void vypisInfo ( ) {
System.out.print (typ + ", ");
vypisDelku ( );
}
public abstract void vypisDelku ( );
}
class Ptak extends Zivocich {
int delkaKridel;
Pak (String typ, int delka) {
super (typ);
delkaKridel = delka;
}
public void vypisDelku ( ) {
System.out.print ("delka kridel: " + delkaKridel);
}
}
class Slon extends Zivocich {
int delkaChobotu;
Slon (String typ, int delka) {
super (typ);
delkaChobotu = delka;
}
public void vypisDelku ( ) {
System.out.print ("delka chobotu: " + delkaChobotu);
}
}
public class PolymAbstr {
public static void main(String[] args) {
Zivocich [] z = new Zivocich [2];
z[1] = new Ptak ("ptak", 3);
z[2] = new Slon ("slon", 4);
z[1].vypisInfo ( );
z[2].vypisInfo ( );
}
}
Metoda clone – kopirovanie objektu (napr. pri dedeni sa kopiruje objekt, instancia rodicovskej triedy)
Metoda equals – zistuje rovnost objektov (ako „= =“), pozn. ak su dva objekty rovnake musí metoda
hashCode( ) vracat rovnake cislo
Metoda hashCode – vracia pre každý objekt cislo typu int, ktore je po dobu zivota objektu stále rovnake
Metoda getClass – poskytuje informacie o lubovolnom objekte za behu programu
napr. :
class Rodic { public int i; public Rodic() { i = 1; } } public class Potomek extends Rodic { public static void
main(String[] args) { Potomek
dite = new Potomek(); System.out.println("Jmeno
tridy je: " + dite.getClass().getName()); System.out.println("Jmeno
rodicovske tridy je: " + dite.getClass().getSuperclass().getName()); } }
Ukoncenie prace s objektmi:
Garbage collector – cistic pameti, automaticky uvolnuje z pamati nepotrebne objekty (System.gc( );)
napr. :
Obdelnik obd = new Obdelnik(5, 3);
obd = null;
System.gc( );
Finalizer – ukoncovac, ukoncuje pracu s objektami, je to instantna metoda, ktora nemá ziadne parametre,
nemozno ju pretazit (v hlavnej metode ju volam takto: System.runFinalization( );) a v danej triede
musí byt definovana iba nasledovne:
protected void finalize( ) throws Throwable {
prikazy;
super.finalize( );
}
15. Rozhranie – interface:
pojmy:
Implementacia – doplnenie, dokoncenie
Interface – rozhranie, podobne ako abstraktna trieda (odlisuje sa viacnasobnou dedicnostou[K57] a moze
obsahovat iba metody a konstanty[K58])
Prikazom implements – sa implementuje (doplni) do triedy rozhranie a nasledne sa moze pouzivat
Prikaz instanceof – operator, ktory za behu programu zistuje ci trieda implementuje urcite rozhranie
(pomocou tohto operatora vieme zistit napr. aj aktualny typ objektu na ktory odkazuje dana
referencna premenna)
Nested class – vnorena trieda (cize ide o neaku deklarovanu triedu v danej triede)
Static nested class – staticka vnorena trieda
Top-less class – trieda najvyssej urovne, trieda ktora obsahuje neaku vnorenu triedu (tiez. vonkajsia trieda[K59])
Inner class – vnutorna trieda (tj. vnorena a nestaticka, po kompilacii: napr. Obdlznik$Vnutorna.class)
Anonymna vnutorna trieda – nie je vyditelne vyznacena hlavickou class (po kompilacii: napr.
Obdlznik$1.class)
napr. :
public interface Info { void kdoJsem(); } class Usecka { int delka; Usecka(int delka) { this.delka
= delka; } public Info informace() { return new
Info() { public
void kdoJsem() { System.out.println("Usecka
" + delka); } }; // konec prikazu return - středník
nutný } // konec metody informace() } public class Test { public static void
main(String[] args) { Usecka u =
new Usecka(5); // u.kdoJsem(); // chyba Info i =
u.informace(); i.kdoJsem(); } }
Deklaracie napr. :
String s1 = ²ahoj²;
String s2 = new String(²ahoj²);
String s2 = new String(s1);
Trieda String:
Prikaz[K60] compareTo – porovnavanie dvoch retazcov
Prikaz compareToIgnoreCase – porovnavanie dvoch retazcov, bez ohladu na male a velke pismena
Prikaz equals – zistuje ci su dva retazce zhodne
Prikaz equalsIgnoreCase – zistuje ci su dva retazce zhodne, bez ohladu na male a velke pismena
Prikaz toLowerCase – prevod retazca na male pismena
Prikaz toUpperCase – prevod retazca na velke pismena
Prikaz concat – spojenie retazcov (to iste operatorom +)
Prikaz replace – vytvory retazec s nahradenymi znakmi
Prikaz substring – vytvori podretazec z retazca
Prikaz getChars – znaky z retazca uklada do pola retazcov
Prikaz startsWith – testuje zaciatok retazca urcitym podretazcom
Prikaz endsWith – testuje koniec retazca urcitym podretazcom
Prikaz trim – orezava[K61] biele znaky (tj. \r – navrat na zaciatok riadku, \n – novy riadok, \t - tabulator)
Prikaz charAt – ziskava jednotlive znaky z retazca
Prikaz indexOf – hlada v retazci zadany znak a vrati cislo pozicie znaku v retazci[K62]
Prikaz lastIndexOf – hlada v retazci posledny vyskit zadaneho znaku a vrati cislo jeho pozicie
Prikaz valueOf – konvertuje zakldany datovy typ na retazec a opacne
Prikaz parse?[K63] – pouziva sa tiez na konvertovanie, je rychlejsi ako valueOf
Trieda StringBuffer:
Prikaz length – vrati dlzku retazca
Prikaz capacity – vrati maximalnu moznu dlzku retazca (cize kapacitu)
Prikaz ensureCapacity – meni kapacitu retazca
Prikaz setLenght – meni kapacitu retazca
Prikaz reverse – obrati cely retazec a ulozi ho do tej istej premennej (tj. prepise)
Prikaz append – prida podretazec na koniec daneho retazca
Prikaz deleteCharAt – maze jednotlive znaky
Prikaz insert – vklada do retazca znaky a podretazce na presne urcene miesto v retazci
Prikaz replace – nahradi v retazci urceny podretazec inym podretazcom
Prikaz charAt – bez ovplivnenia retazca ziskava z neho jednotlive znaky
Prikaz setCharAt – nastavi v retazci jednotlive znaky (zmena jednotlivych znakov za ine)
Trieda Character:
Prikaz isDigit – zisti[K64], ci je dany znak cislo
Prikaz isLetter – zisti, ci je dany znak pismeno
Prikaz isLetterOrDigit – zisti, ci je dany znak cislo alebo pismeno
Prikaz isLowerCase – zisti, ci je dany znak male pismeno
Prikaz isUpperCase – zisti, ci je dany znak velke pismeno
Prikaz isWhitespace – zisti, ci je dany znak „biely znak“ (tj. \n \r \t)
Prikaz toLowerCase – vrati male pismeno urceneho pismena[K65]
Prikaz toUpperCase – vrati velke pismeno daneho pismena
Prikaz digit – prevadza jednotlive znaky na cisla
Prikaz toString – metoda, ktoru automaticky obsahuje každý Objekt, ked sa neprekryje[K66] vrati meno triedy,
oddelovaci znak @ a identifikacne cislo objektu, dalsie pouzitie: prevod[K67] typu StringBuffer na String .
StringTokenizer.class – dokaze rozdelit retazec obsahujuci medzery[K68] na niekolko retazcov
Prikaz import – vkladanie balikov, rozsiruje oblast platnosti tried
pozn. balik java.lang predstavuje standardny import[K69]
Prikaz package – vytvaranie balikov
napr. package moje.java; // vytvori na disku adresar „moje“ a v nom podadresar „java“ a tam
bude ukladat subory .class
Pristupove prava:
Specifikator |
V tej istej (samotnej) triede |
V inej triede toho isteho balika |
V podtriede ineho balika |
V inej triede ineho balika |
|
private |
ano |
ne |
ne |
ne |
ne |
(neuvedene) |
ano |
ano |
ano |
ne |
ne |
protected |
ano |
ano |
ano |
ano |
ne |
public |
ano |
ano |
ano |
ano |
ano |
Exception – vynimka, je jednou z velmi silnych bezpecnostnych prvkov Javy, (kompilator nuti
programatora reagovat na chybove styavy)
Exceptional
event – vynimocny stav, tiez. udalost
Throw
exception –
vyhodenie vynimky (napr. ²pri otvarani suboru nastala chyba!²), vynimku
vyhodime[K71] prikazom throw
Handler – je metoda, ktora reaguje na
udalost (napr. pri prikaze ²catch {blok}²)
Propagating
exceptions –
propagacia vynimky, tiez. sirenie vynimky[K72] (pouziva sa za formalnymi
parametrami pomocou klucoveho slova throws)
Trieda Error:
Tato trieda[K73] predstavuje zavazne chyby v JVM, reakcia na tento druh vynimky v nasom programe je
vacsinou nemozna
Trieda RuntimeException:
Asynchronne vynimky, pretoze sa tieto vynimky mozu vyskitovat hocikde[K74], reakcia na tento druh vynimky je dobrovolna (napr. NumberFormatException[K75])
Trieda Exception:
Synchronne vynimky (kontrolovane vynimky) – checked exceptions, musime ich osetrit prip. na ne reagovat. Najcastejsie sa vyskytuju v metodach, ktore pracuju so vstupmi a vystupmi (napr. IOException)
Zakladna hierarchia objektov vynimok:
Kompletne osterenie vynimky:
(pomocou konstrukcie try, catch a finaly):
try – chraneny usek, do tohoto bloku sa pise bezny program, v ktorom moze vyskocit vynimka
catch – bezprostredne nasleduje za try a hovori na aku vynimku sa bude reagovat a ako (catch
zachycuje vynimku)
finaly – koncovy blok, kod v jeho tele sa prevedie vždy[K76] (blok finaly sa typycky pouziva pre
uvolnenie prostriedkov[K77] pouzitych v bloku try)
Prikaz[K78] PrintStackTrace – v pripade vyskytu vynimky vypise chybove hlasenie (rozumna reakcia na
vynimku, ak ju nechceme riesit)
Prikaz getMessage – vyhadzuje popis chyboveho stavu
+Prikaz System.setErr[K79] – presmeruje chybovy vypis do suboru
+Prikaz System.setOut – presmeruje chybovy vypis do suboru
File.class – reprezentuje subor alebo adresar v hostitelskom operacnom systeme
methods:
exists – testuje ci dany subor reprezentovany objektom existuje
canRead, canWrite – tieto metody testuju, ci mame pravo z danych suborov citat, resp. zapisovat
isDirectory, isFile – tieto dve metody zistuju, ci sa jedna o normalny subor, alebo o adresar
lastModified, lenght – zistuju datum poslednej zmeny a dlzku daneho suboru
delete – zmaze reprezentovany subor
renameTo (File) – premenuje subor na meno reprezentovane inym objektom triedy File
list – vrati zoznam vsetkych suborov v danom adresary ako pole retazcov
mkdir, mkdirs – vytvori novy adresar (druha varianta - aj s pridavnou cestou)
21. Citanie zo vstupov a zapis na vystupy:
(prudy znakov a prudy bajtov)
pojmy:
Stream – tok dat, prud, kanal
Vstupny prud – kanal pre citanie
Vystupny prud – kanal pre zapis
Pipe – rura, je idealne zariadenie pre ulozenie docasnych dat, vznika v pamati a preto ma vysoko-rychlostnu
dostupnost
Zakladne triedy:
Reader.class – abstraktna trieda pre znakovo orientovane prudy
read( )[K80] – citanie znakov z otvoreneho znakoveho
prudu
Writer.class – abstraktna trieda pre znakovo orientovane prudy
write( ) – zapis znakov do otvoreneho znakoveho prudu
InputStream.class – abstraktna trieda pre bajtovo orientovane prudy
read( ) – precita jeden bajt z otvoreneho vstupneho prudu, ked je zdroj bajtov uzatvoreny vrati
hodnotu -1
OutputStream.class – abstraktna trieda pre bajtovo orientovane prudy
write( ) – protiklad metody read ( ), ktory zapise do vystupneho prudu jeden bajt
Triedy vlastnosti (filtre):
(sluzia na spracovanie dat, prevadza sa po fyzickom presune dat)
BufferedReader.class – vyuzitie vyrovnavacej pamate, bufferovane citanie pre znaky
readLine[K81] ( ) – nacita celey riadok zo vstupneho suboru (bez koncovych znakov riadky)
BufferedWriter.class
– vyuzitie vyrovnavacej pamate, bufferovany
zapis pre znaky
writeLine ( ) – zapise cely riadok do vystupneho suboru (bez koncovych znakov riadky)
newLine ( ) – prida ukoncovacie znaky pri zapise retazca do vystupneho suboru
BufferedInputStream.class – vyuzitie vyrovnavacej pamate, bufferovane citanie pre bajty
BufferedOutputStream.class – vyuzitie vyrovnavacej pamate, bufferovany zapis pre bajty
LineNumberReader.class – odvodena trieda od BufferedReader
getLineNumber ( ) – zistuje kolko riadkov sme uz precitali
setLineNumber ( ) – nastavuje ine cislo riadky
PushbackReader.class – vratenie nacitaneho znaku spat do vstupneho prudu pre znaky, vrati precitany znak[K82]
PushbackInputStream.class – vratenie nacitaneho znaku spet do vstupneho prudu pre baty, vrati precitany
bajt
PrintWriter.class – formatovany vystup[K83] pre znaky
PrintWriter (Writer out, boolean autoFlush) – rozsireny konstruktor, formatovany vystup
s riadkovanym bufferovanim
PrintStream.class – formatovany vystup pre bajty
DataInputStream.class – neformatovane bajtove citanie zakladnych datovych typov
readBoolean[K84] ( ) – citanie zakladnych datovych typov
:
:
readDouble ( ) – citanie zakladnych datovych typov
DataOutputStream.class – neformatovany bajtovy zapis zakladnych datovych typov
writeBoolean ( ) – zapis zakladnych datovych typov
:
:
writeDouble ( ) – zapis zakladnych datovych typov
writeChars[K85] (String s) – zapisuje znaky do retazca pre vystupny bajtovy prud
ObjectInputStream.class – bajtove citanie lubovolnych objektov (proces serializacie)
readObject ( ) – citanie objektov
ObjectOutputStream.class – bajtovy zapis lubovolnych objektov (proces serializacie)
writeObject ( ) – zapis objektov
OutputStreamWriter.class – most medzi znakovym prudom a bajtovym prudom, vstup znakov a vystup
bajtov
InputSteramReader.class – most medzi bajtovym prudom a znakovym prudom, vstup bajtov a vystup
znakov
Triedy pre fyzicky presun:
FileReader[K86].class – citanie zo suboru, vstup znakov
skip (long pocet) – preskoci pri citani zadany počet znakov
boolean
markSupported ( ) – zistuje ci su prudom podporovane operacie reset( )
a mark (long
platnost)
reset ( ) – vrati sa na zaciatok suboru
mark (long platnost) – oznaci aktualnu poziciu v subore znackou, na ktoru sa potom bude vracat
metoda reset
FileWriter.class – zapis do suboru, vystup znakov
FileWriter[K87] (String meno, boolean append) – tento druhy konstruktor umoznuje subor rozsirovat (tj.
pripisovat na koniec)
flush ( ) – okamzite zapisanie bufferovanych dat na disk
FileInputStream.class – vstupy bajtov zo suboru
FileOutputStream.class – vystupy bajtov zo suboru
PipedWriter.class – zapis znakov do rury
PipedReader.class – citanie znakov z rury
PipedInputStream.class – citanie bajtov z rury
PipedOutputStream.class – zapis bajtov do rury
Triedy pre pracu so zariadeniami:
Zariadenie |
Presun znakov |
Presun bajtov |
pamat |
CharArrayReader.classCharArrayWriter.classStringWriter.class |
ByteArrayInputStream.classByteArrayOutputStream.class StringBufferInputStream.class |
subor |
FileReader.classFileWriter.class |
FileInputStream.classFileOutputStream.class |
rura |
PipedReader.classPipedWriter.class |
PipedInputStream.classPipedOutputStream.class |
RandomAccessFile.class – nahodny[K88] pristup k suborom
lenght ( ) – vrati velkost suboru[K89]
skipBytes (int n) – preskoci nasledujucich n bajtov
getFilePointer ( ) – vrati aktualnu poziciu v subore
seek (long pozice[K90]) – nastvi aktualnu poziciu v subore
setLenght (long velikost) – nastavit velkost suboru, cim mozme subor rozsirit alebo odrezat
System.class – tato trieda dava k dispozicii tri vstupno/vystupne prudy:
System.in[K91] – vstupny prud (InputStream)
System.out – vystupny prud (PrintStream)
System.err – chybovy vystupny prud (PrintStream)
methods:
setIn ( )[K92] – presmerovanie, zmena vstupnych prudov
setOut ( ) – presmerovanie, zmena vystupnych prudov (napr. na presmerovanie do suboru)
setErr ( ) – presmerovanie, zmena chybovych vystupnych prudov (napr. do suboru)
getProperty ("key[K93]") – vrati informaciu o pozadovanej systemovej vlastnosti
currentTimeMillis ( ) – vrati pocet milisekund od 1.1.1970
Runtime.class – (inicializacia: Runtime r = Runtime.getRuntime( );[K94])
methods:
totalMemory ( ) – vracia celkovu velkost pamati dostupnu JVM v bajtoch
freeMemory ( ) – vrati velkost prave dostupnej pamati
Systemove
atributy:
kluc |
hodnota |
vyznam |
file.separator |
\ |
oddelovac
adresarov v ceste path |
line.separator |
\r\n |
ukoncenie
riadky |
path.separator |
; |
oddelovac
jednotlivych ciest v path |
java.class.path |
. |
adresare,
kde su ulozene subory .class |
java.class.version |
46.0 |
verzia
.class |
java.home |
C:\progra~1\jdk1.2\jre |
adresar, z
ktoreho je spustany interpreter Javy |
java.vendor |
Sun
Microsystem Inc. |
zdroj
(predajca) tejto instalacie Javy |
java.vendor.url |
URL predajcu |
|
java.version |
1.2 |
verzia Javy |
os.arch |
x86 |
typ
procesora v architekture operacneho systemu |
os.name |
Windows
NT |
typ
operacneho systemu |
user.dir |
D:\java\ujj |
aktualny
adresar |
user.home |
C:\WINNT\Profiles\herout |
domovsky
adresar |
user.name |
herout |
login
name uzivatela |
pojmy:
Vlakna (threads[K95]) – programove stopy (tj. viac programov beziacich naraz vedla seba), ktore bezia skutocne
paralelne v pocitacoch s vacsim poctom procesorov, v pripade jedneho procesora bezia pomocou
predavania riadenia (bezia
pseudoparalelne)
Korutiny (couroutines) – kooperujuce procesy (light-weight process), paralelne nezavisle programove
casti deleneho programu, v Jave sa pouziva termin vlakna
Predavanie riadenia – striedanie vlakien
Preemptivne planovanie – mechanizmus, ktory zabezpeci, aby sa do behuschopneho stavu dostalo vlakno
s vyssou prioritou, ako ma prave beziace vlakno
Zdielanie casu (time-scaling) – casove kvanta, vlakna s rovnakou prioritou sa pravidelne striedaju
(Windows a Unix toto splnaju, podporuju)
Time-Out – uplinutie casu (po uplinuti urciteho casu nastava timeout, napr. v metode: join (100);)
Critical sections – kriticke sekcie, useky kodov, ktore mozu sposobovat pri paralelnom behu problemy (tj.
v pripade ked vlakna pracuju nad rovnakymi datami)
Monitor – programovy modul, urceny pre pracu v paralelnom prostredi (v monitore moze vzdy len jeden
proces, v jednom casovom okamihu aktivne prevadzat progarm), implicitne ho obsahuje kazdy
objekt a aktivuje sa pomocou klucoveho slova synchronized[K96]
Synchronizovane bloky – kriticke sekcie, sa pouziva na oznacenie mensich usekov nez je metoda (tiez
pomocou klucoveho slova synchronized)
Model[K97] (producent-konzument) – oddelenim I/O operacii (vstupno/vystupnych, producenta od
komzumenta) preventivne riesime problematiku synchronizacie
Starvation – hladovanie, ked vlakno ktore sice ziskalo monitor nema dostatok systemovych prostriedkov,
aby robilo pokroky vo svojej cinnosti (napr. v neakych vypoctoch), caka na uvolnenie neakych
zdrojov
Deadlock – uvaznuti, ked hladovanie zposobi zablokovanie celeho vypoctu
Daemon – demon, specialne vlakno, toto vlakno moze zit aj ked program uz skoncil (tj. hlavna metoda
main uz dobehla), vlakno sa oznaci za demona pomocou metody setDaemon (true);
Thread.class – vynimka, ktora sa moze vyskitnut pri pouzivani vlakien je InteruptedException[K98]
methods:
run ( ) – popisuje co robi vlakno pri svojom behu
start ( ) – spustenie vlakna
sleep (x) – predanie riadenia[K99], uspi vlakno na x milisekund
yield ( ) – dobrovolne prenecha (predava riadenie) dalsiemu vlaknu
getPriority ( ) – zisti prioritu vlakna
setPriority ( ) – nastavy prioritu vlakna (pricom priorita je cele nezaporne cislo)
currentThread ( ) – zisti aktualne beziace vlakno
join ( ) – tato metoda caka na ukoncenie svojho vlakna (metoda je pretazena[K100])
isAlive ( ) – zisti ci uz dane vlakno skoncilo alebo este nie
interrupt ( ) – dokaze prerusit ine vlakno (pozor! neprevadza vlakno do mrtveho stavu) a sposobit
predcasne prebudenie (ak vlakno bolov uspane metodou sleep)
Object.class – rodicovska trieda vsetkych objektov (je na vrchu hierarchie dedicnosti..)
wait ( ) – zastavi vlakno az do jeho prebudenia metodou notify (,ktorou[K101] vlastne vola ine vlakno)
notify ( ) – prebudi vlakno, ktore bolo zastavene metodou wait (tiez je pretazena metodou, ktora caka
len isty cas)
notifyAll ( ) – prebudi vsetky vlakna, ktore boli pozastavene metodou wait
Stavy vlakna:
Nove vlakno – vlakno bolo vytvorene (najcastejsie pomocou new), ale zatial nebolo spustene pomocou
metody start ( )
Behuschopne vlakno (runable) – vlakno uz bolo spustene metodou start ( ), (tychto vlakien moze byt viacej,
ale len jedno vlakno je prave beziace)
Nebehuschopne vlakno – vlakno, ktore bolo uspane metodou sleep ( ), alebo vlakno caka na metodu wait ( ),
alebo caka na vstup, alebo vystup[K102]
Mrtve vlakno – vlakno, ktoreho metoda run ( ) uz skoncila
Java Core API (Aplication Programming Interface) – aplikacne programove rozhranie, obasahuje viac
ako tisic standardnych knihovnych tried (rt.jar)
JIT
kompilator (Just In Time) – po skontrolovani spravnosti bajtkodu vyrobi v pameti .exe
program
Java
Virtual Maschine JVM
– zistuje vazby na hardver a interpretuje bajtkod, =interpreter
Applet – mala aplikacia spustana v
prosterdi prehliadaca
GUI – graphic user interface, graficke
uzivatelske rozhranie
IDE – integrated developer environment,
vizualne vyvojove prostredie (nap. Visual Dev Studio, JCeator,
JBilder,…)
Primitive
Data Type –
zakladne (primitivne) datove typy
OOP – objektovo orientovane programovanie
Formalne parametre – parametre v hlavicke v gulatych zatvorkach
Oblast viditelnosti – priestor mien, telo metody
Implicitne – vnutorne, lokalne, rozsirujuca konverzia pri pretypovani
Explicitne – vonkajsie, globalne, zuzujuca konverzia při pretypovani
Alokovanie pamati (memory allocation) – vyhradenie pamati
Referencia – odkaz
Static initialization block – staticky inicializacny blok, pouziva sa napriklad pri inicializacii konstantneho
pola (pouz. static { … })
Plne kvalifikovane meno – meno triedy vratane balika v ktorom sa nachadza + meno metody, alebo
premennej (napr. java.lang.Math.PI)
AWT – abstract windows toolkit, balik v Java Core API pre tvorbu GUI (import java.awt.*;)
Datova zlozka – premenna
Funkcna zlozka – metoda
Kniznicna metoda – metoda z Java Core API
Buffer – vyrovnavacia pamet, vyditelne zrychluje zapis a citanie
Prefix – predpona
Sufix – pripona (napr. pripona L, alebo l, ktora urci ze pojde o cislo typu long: long j = 56L)
Blok – zlozeny prikaz (syntakticka konstrukcia), umoznuje zapisat skupinu prikazov, zacina zlozenou
zatvorkou ² { ² a ukonci zatvorkou ² } ²
Modifikatory – modifikuju pristup k jednotlivym triedam, datovym zlozkam a metodam.
Key (kluc) – meno atributu (pri systemovych vlastnostiach okolneho prostredia os[K103])
Identifikator – meno premennej, metody, triedy..
Jbuilder:
Komponenty – predprogramovane sucasti
uzivatelskeho rozhrania aplikacii (napr. ikony vo
vizualnom programovani)
Udalosti
(events) –
pokyny na riadenie GUI
Modul – reusable package,
Dvojcestny nastroj – zdrojovy kod je uzko prepojeny s vizualnym navrhom
Vseobecne:
WYSIWYG
editory – vizualne
programovanie (Cool Edit, CBuilder, JBuilder,…)
Argument – parameter
Ked sme zadefinovali konstruktor s parametrami, prekladac uz nevytvori implicitny konstruktor.
Je velmi vhodne pripravit v nasej triede mimo ostatnych konstruktorov aj jeden bez parametrov[K104] (aj kde ju nepotrebujeme), aby sme usetrili starosti[K105] buducim potomkom tejto tridy.
Ak trieda obsahuje co len jednu abstraktnu metodu, cela trieda musí byt abstraktna (tj. v hlavicke predpona abstract). Pouzitie takejto abstraktnej metody je mozne iba cez potomka, co nas zase nuti v potomkovi zadefinovat (prekrit) vsetky zdedene abstraktne metody (..a abstraktne premenne).
Vsetky triedy, ktore nemaju specifikovany balik, patria automaticky do implicitneho balliku default package.
Konstrukcia try-finaly – nemusi mat s vynimkami nic spolocneho, pouz. sa, ked chceme, aby sa konkretny usek kodu (blok finaly) vždy previedol po useku try.
Pri volani lubovolneho konstruktora sa najprv prevedie kod konstruktora rodicovskej triedy (..rodicovskych tried v dedicskej hierarchii), kod konstruktora nasej triedy sa prevedie jako posledny.
Referencna premenna deklarovana na typ triedy moze obsahovat odkaz na tuto triedu alebo na lubovolnu triedu z jej potomkov.
Pre rozsiahlejsie vlaknove aplikcie je vhodne pouzit zoskupovanie rovnakych typov vlakien do jednotlivych skupin, s ktorymi sa potom da pracovat naraz. Pre pracu zo skupinami existuje v triede Thread mnozstvo metod. Ak nepouzijeme skupiny na nase vlakna, tak impicitne vsetky patria do default skupiny.
[K1](vyznamu jazykovych jednotiek)
[K2]odborne - vstavane systemy
[K3]Zposoby zapisu identifikatorov
[K4]obdobne, podobne
[K5]primitive data types
[K6]desatinne cisla, (pozn. semilogaritmicky zapis: 1.54 * 106 je ekvivalentne so zapisom 1.54e6, alebo 1.54E6, v oboch pripadoch sa jedna o cislo 1540000 (napr.: 0.2e-4 = 0.2*10-4 = 0.00002))
[K7]su prvkami OOP, su neprimitivne a odkazujuce, cize referencne
[K8]v Jave funguje pipnutie iba cez zvukovu kartu
[K9]aritmeticke operacie
[K10]specialny unarny operator - inkrement
[K11]specialny unarny operator - dekrement
[K12]negovane
[K13]cize pri vyhodnocovani vyrazu uz bude pocitat so zvecsenu alebo zmensenu hodnotu premennej ‚i‘ o jedna
[K14]aritmeticke operacie
[K15]delenie modulo (tj. zvysok po celociselnom deleni)
[K16]podmienene vyrazy, tiez patri do aritmetickych operacii
[K17]porovnavacie operatory
[K18]konjunkcia
[K19]v hlavicke danej metody sa operacia nevyhodnocuje
[K20]disjunkcia
[K21]v hlavicke danej metody sa operacia nevyhodnocuje
[K22]v hlavicke danej metody sa operacia vyhodnocuje
[K23]v hlavicke danej metody sa operacia vyhodnocuje
[K24]operacia, vyraz
[K25]prvy operand
[K26]binarny operator
[K27]druhy operand
[K28]operacia, vyraz
[K29]bitova konjunkcia
[K30]bitova disjunkcia
[K31]sa obcas pouziva pre rychle nasobenie n-tou mocninou
[K32]sa obcas pouziva pre rychle delenie n-tou mocninou
[K33]sa pouziva pre neznamienkove delenie n-tou mocninou, funguje len pre kladne cisla, pre typy int a long
[K34]podprogramy
[K35]v Jave su zakladne datove typy obalene triedou
[K36]modifikator statickej metody
[K37]tj. takato metoda nemoze byt predefinovana potomkom
[K38]objektovo orientovane programovanie
[K39]premenna deklarovana vonku v triede (von - zhladiska metody)
[K40]nevytvaraju sa z nich instancie, tzn. každý objekt danej triedy vyuziva tu istu triedovu premennu
[K41]premenna deklarovana dnu v metode
[K42]nevytvaraju sa z nich instancie, tzn. každý objekt danej triedy vyuziva tu istu triedovu premennu
[K43]proti preteceniu sa chranime pretypovanim premennej na iny datovy typ, ide o tzv. rozsirujucu a zuzujucu konverziu
[K44]!v opacnom pripade kompilator vyhodi chybu
[K45]identifikator referencnej premennej typu_pole
[K46]maticovom
[K47]tj. os-y
[K48]tj. os-x
[K49]implicitne dany
[K50]rovnaky identifikator, odlisna hlavicka
[K51]tj. v rodicovskej triede
[K52]tj. s rovnakym identifikatorom
[K53]referencna metoda
[K54]cize premennych
[K55]objektovo orientovane programovanie
[K56]vsetky triedy v Jave maju jedneho spolocneho, priameho alebo nepriameho predka a to triedu Object
[K57]iba v rozhrani je povolena viacnasobna dedicnost, tzn. dana trieda moze implementovat naraz viac rozhrani, (inak v jave každa trieda moze mat iba jedneho rodica)
[K58]premenne v ziadnom pripade
[K59]z pohladu vnorenej triedy
[K60]kniznicna metoda
[K61]zmaze
[K62]cize vrati jeho index
[K63]napr. parseLong, parseDouble, parseFloat, atd…
[K64]tj. vrati TRUE, alebo FALSE
[K65]cize znaku, znak = pismeno
[K66]tzn. neprekrije vlastnou metodou ktora len upravi alebo doplni originalnu metodu super.toString()
[K67]konvertovanie
[K68]medzery, alebo iny specifikovany znak (pouzitim rozsireneho konstruktora)
[K69]tzn. nemusime pisat ²import java.lang.*;² (vsetky triedy balika ²java.lang² su zname vo vsetkych kompilacnych jednotkach)
[K70]v potomoku
[K71]aby sme mohli vynimky pouzivat, musime ich vediet vyvolat (a to prikazom ²throw²)
[K72]kompilator hlada vhodny handler, ak ho nenajde v danej konstrukcii try-catch, tak dalej hlada v dinamicky nadradenom bloku. Ak nenajde vhodny handler v aktualnej triede, tak prejde do triedey, ktora vyvolala to hladanie a vhodny handler najde tam (tj. v triede danej vynimky - pouzitim prikazu throws)
[K73]tj. trieda (.class) vynimok
[K74]nie len pri volani urcitych metod
[K75]tato vynimka znamena, ze sa pokusame previest neaky retazec znakov na cislo, ktory nema s cislom nic spolocne (napr. „Ahoj“)
[K76]aj v pripade ze blok try skoncil s vynimkou aj v pripade ze skoncil „normalne“ (tj. bez vyvolania vynimky)
[K77]napr. pre zatvorenie otvorenych suborov apod.
[K78]metoda z Java Core API
[K79]tzn. metoda setErr( ) definovana v triede System
[K80]hlavna metoda tejto triedy
[K81]cita len znaky
[K82]napr. pri citani znakov, ked podla dalsieho nasledujuceho znaku vieme ze sa citanie ma zastavit, tento znak vsak potrebujeme vratit
[K83]na druhej strane formatovany vstup - nieje priamo podporovany Java Core API
[K84]tieto metody platia aj pre DataOutputStream
[K85]nahrada za writeLine( ), ktore nieje podporovane Java Core API
[K86]moze vyvolat vynimku FileNotFoundException
[K87]druhy konstruktor s rozsirujucou funkciou
[K88]obojsmerny, citanie aj zapis
[K89]vhodne, ak sme tuto hodnotu neziskali z instancie triedy File
[K90]hodnota merana od zaciatku suboru
[K91]referencne premenne:
[K92]metody:
[K93]podla tabulky systemovych atributov
[K94]cize inicializacia pomocou metody
[K95]..k vlaknam sa da pristupovat aj cez rozhranie Runable
[K96]tento modifikator sa pise pred metodu, ktoru chceme aby prebehla s pouzitim monitoru (cize zastavy vsetky vlakna a prevedie sa dana metoda)
[K97]napr. jedno vlakno cita zo suboru a subezne druhe vlakno donho zapisuje
[K98]..je to tiez trieda, kedze aj vsetky vinimky su definovane v jednotlivych triedach
[K99]tj. pridelenie procesora
[K100]kedy sa na ukoncenie vlakna caka len urceny pocet milisekund
[K101]zastavenim
[K102]pozor!: I/O metody maju vacsiu prioritu
[K103]operacneho systemu
[K104]cize prekrity implicitny konstruktor
[K105]tj. aby v buducich potomkoch nebolo nevyhnutne nutne vytvarat konstruktor len koli volaniu predka