Poznámky
Prezentace
Osnova
1
"Róbert Novotný"
  • Róbert Novotný
  • robert.novotny@upjs.sk
  • 5. 10. 2006
2
Reprezentácia dátových typov
 v pamäti počítača
  • alias ,,Bratia == a equals() zasahujú"
  • jestvujú dva druhy dátových typov: primitívy a objekty
    • primitívy: int, boolean, float, double,...
      • dátové typy začínajúce malým písmenom
    • objekty: String, Pes,...
      • začínajúce veľkým písmenom
3
Reprezentácia primitívov v pamäti počítača
  • primitívy: presne ako v Pascale
    • premenná je chlievik v pamäti, ktorý má
      • názov (i)
      • dátový typ (int)
      • veľkosť podľa dátového typu (int: 32 bitov)
  • príklad: int i = 52. V binárnom kóde: 110100
4
Reprezentácia primitívov v pamäti počítača
  • primitívy: presne ako v Pascale
    • premenná je chlievik v pamäti, ktorý má
      • názov (i)
      • dátový typ (int)
      • veľkosť (rozsah) podľa dátového typu (int: 32 bitov)
5
Reprezentácia primitívov v pamäti počítača
  • porovnanie primitívov: výhradne cez ==
  • porovnajú sa chlieviky bit po bite.
    • 110100 (50) == 110100 (50)
    • 110101 (51) != 110100 (50)
6
Reprezentácia primitívov v pamäti
počítača - objekt
  • Objekt je premenná typu špecifikovaného triedou objektu.
  • premenná je chlievik v pamäti, ktorý má
    • názov (i)
    • dátový typ (int)
    • veľkosť podľa dátového typu
  • Veľkosť?
    • aký veľký je String? A Pes? A Veľryba?

7
Je Veľryba väčšia než Mravec?
  • nevieme, aký veľký je objekt
  • objekty nemôžeme natlačiť do chlievika
    • čo keď sa nezmestia?
    • jak dostat velrybu do pohárku
    • nemôžeme mať nekonečne veľký chlievik
8
Všetky objekty sú na kope... teda halde
  • Urob si haldu v pamäti počítača, v halde urob priehrady a zvnútra i zvonka ich vymaž smolou! A postav ju takto: tristo MB bude jej dĺžka, päťdesiat MB jej šírka a tridsať MB jej výška.
  • Do korába vojdeš ty i tvoji synovia, tvoja žena aj ženy tvojich synov s tebou.
  • Zo všetkých vtákov podľa svojho druhu, z dobytka podľa svojho druhu a z plazov podľa svojho druhu vojdú po dvoch do korába s tebou, aby mohli žiť.
  • – IT Genesis
9
Všetky objekty sú na kope... teda halde
  • halda (heap) je priestor v pamäti určený pre objekty
    • nemýliť si s heapsortom (triedenie haldovaním)!
  • je spravovaný automaticky Javou
  • prostý programátor nevie o existencii haldy
  • na halde sa dejú kadejaké zverstvá
    • automatické uvoľnovanie pamäte (Garbage Collection)
    • o tom však neskôr
10
Detaily v útrobách psa
  • Pes dunčo = new Pes()
  • Pes dunčo;
    • vytvorí sa nové premenná dunčo typu Pes
  • new Pes()
    • na halde sa vytvorí dostatok pamäte pre novú inštanciu
11
Všetky objekty sú na kope... teda halde
  • Pes dunčo  = new Pes()
  • premenná dunčo je nasmerovaná na inštanciu psa na halde. Bude obsahovať adresu inštancie na halde
    • ,,tretí chlievik zhora, piaty sprava, vedľa veľryby"

12
Adresa ja, adresa ty...
  • premenná dunčo obsahovuje adresu inštancie na halde
  • to je presne idea smerníkov
  • našťastie:
    • smerníky sú v pozadí
    • užívateľ ich nevidí
      • ani nechce vidieť
    • žiadne ^. ako v Pascale

13
Podobenstvo s diaľkovým ovládaním
  • premenná Pes obsahuje ,,diaľkové ovládanie" inštancie na halde
14
Podobenstvo s diaľkovým ovládaním
  • Ak pohárik int má veľkosť 32 bitov, akú veľkosť má pohárik typu Pes?
  • Nevedno, ale ani nás to netrápi.
    • JDK od Sunu: 64 bitov
    • Java od Janka Hraška:
      • 64 bitov na obed
      • 32 bitov v noci



15
Otázka k diaľkovým ovládaniam
  • Ak nadeklarujem premennú a nepriradím jej nič, koho riadi diaľkové ovládanie?
    • Pes aibo;
    • Premenná, ktorej nebola priradená žiadna inštancia ukazuje na null.
    • null je analógia nil z Pascalu: smerník, ktorý ukazuje nikam.
  • Ak premenná ukazuje na null, mám diaľkové ovládanie, ale nemám k nemu televízor.



16
Dôsledky diaľkového ovládania
  • Čo spraví nasledovný kód?


    • Pes dunčo = new Pes();
    • dunčo.rasa = "čuvač";
    • dunčo.vek = 25;
    • System.out.println(dunčo.vek);


    • Pes aibo = dunčo;
    • aibo = 35;
    • System.out.println(aibo.vek);


    • System.out.println(dunčo.vek);

17
Ale prrrrečo?
18
Dôsledky diaľkového ovládania
19
Dôsledky diaľkového ovládania
20
Dôsledky diaľkového ovládania
21
Dôsledky diaľkového ovládania - polia
22
Dôsledky diaľkového ovládania
 – polia a objekty