B..... 0 0 + + H H 0 + + + H -
C3.... - 0 0 H + - 0 + 0 + H H
C7.... - + 0 + - + + 0 + 0 H H
D..... H 0 + + - - + 0 H H + H
EY.... 0 0 H + H 0 H + - + + 0
EZ.... - 0 + - + 0 + + - H 0 H
F0.... 0 H + H H + 0 H - + 0 -
F1.... - H + H 0 + H - 0 + + H
H..... H - + H 0 0 H - 0 0 0 +
I..... 0 0 H + - H - H - H + +
JE.... - 0 - + + 0 + H H + 0 -
JG.... - - - H + + + - + + H +
K..... 0 0 + + 0 - + - + H 0 H
M..... + + + + 0 + + - - H + H
N..... + + + + + H + - + + H 0
S..... 0 0 H + H + H H H H H H
VD.... - H - + + H H + - + H -
VM.... 0 H - + - - - - + H H H
W..... + 0 + + 0 + + + + + H H
-
Milyen fájlba kell kerülnie az alma.korte.Barack osztály kódjának?
-
Ha az osztály publikus, akkor a fordítás gyökérkönyvtára alatti alma/korte/ könyvtáron belül található forrásfájlba, amelynek kötelező a Barack.java nevet adni.
Ebből a fordító ugyanebbe a könyvtárba készíti el a Barack.class fájlt.
Ha az osztály nem publikus, akkor fordításnál ugyan nincsen ilyen megkötés, de a futás során a rendszer a megfelelő könyvtárban fogja keresni a Barack.class fájlt.
-
Milyen minősítővel rendelkezik az A osztálybeli a adattag, ha A.a érvényes elérése? Írd le egy mondatban, mi a minősítő hatása.
-
Mivel az osztály nevén keresztül érjük el az adattagot, csak static adattag lehet.
Ez osztályszintűvé teszi az adattagokat/metódusokat.
(Az adattagnak nem kell public elérésűnek lennie, az A osztály metódusaiból akkor is elérhető a fenti módon, ha private.)
-
Mi az aktivációs rekord? (Minek a része? Miről tartalmaz adatokat? Milyen jellegű adatokat tartalmaz?)
-
Az aktivációs rekordok futó alprogrampéldányok vonatkozó adatait (paraméterek, lokális változók) tartalmazzák,
és általában a futási idejű veremben tárolódnak (ekkor veremkeretnek nevezzük őket).
-
Mi a szemétgyűjtés? (Mi a célja? Hogyan működik? Mikor történik?)
-
A szemétgyűjtés a programban már nem használt objektumokat szabadítja fel.
Az objektum használaton kívüli voltát többféleképpen lehet felderíteni:
hivatkozásszámlálás, gyökérkészletből elérhetetlenség.
A virtuális gép szabja meg, mikor történik szemétgyűjtés.
-
Hogyan van a "tömbök tömbje" ábrázolva Javában? (Hogyan helyezkednek el az elemek a memóriában? Miben tér ez el a "többdimenziós tömb" fogalmától)?
-
A tömbök referencia típusok, ezért a heap-en tárolódnak; a külső tömb elemei hivatkozások a belső tömbökre.
A belső tömbök hosszai eltérhetnek (jagged array).
-
Mi a csomagoló osztály (wrapper class)? Miben tér el a "becsomagolt tartalomtól"? Miért van rá szükség?
-
A csomagoló osztályok referencia típusok, mindegyik primitív típushoz tartozik egy. Adattagként tartalmazza a megfelelő primitívet.
A csomagoló objektumok a heapen tárolódnak, a megfelelő primitívek a stacken; mutatón keresztül érjük el őket, a primitíveket közvetlenül;
vannak metódusaik, a primitíveknek nincsenek.
Típusparaméterként csak referencia típusok használhatóak, ez a jellemző felhasználásuk: List<Integer> érvényes, de List<int> érvénytelen.
-
Mi a dinamikus kötés?
-
Amikor egy hivatkozáson keresztül metódushívást kezdeményezünk,
a vezérlés a hivatkozott objektum típusa (a dinamikus típus) alapján dönti el, melyik műveletet hívja meg:
az osztályhierarchiában a dinamikus típushoz legközelebbi változatot.
-
Mi a különbség az ellenőrzött (checked) és a nem ellenőrzött (unchecked) kivételek között?
-
A nem ellenőrzött kivételek vagy az Error, vagy a RuntimeException osztály leszármazottai, az ellenőrzöttek az Exception egyéb leszármazottai.
A metódusokon kötelező feltüntetni, hogy milyen ellenőrzött kivételeket dobhatnak, a nem ellenőrzötteket nem.
-
Mi a különbség a sekély és a mély másolás között?
-
Egy objektum (jellemzően valamilyen adatszerkezetek, pl. egy tömb) lemásolása során az objektum referencia típusú mezőit lemásolhatjuk egy az egyben (sekély másolat), ekkor aliasing lép fel a hivatkozott objektumra. Mély másolás esetén a teljes adatszerkezetet lemásoljuk, azaz minden hivatkozott objektumot (és az azok által hivatkozottakat stb.) is lemásoljuk.
-
Mi a hashCode?
-
Az Object osztály egy művelete, ezért mindegyik osztályban jelen van, fejléce public int hashCode(). Legtöbbször felüldefiniáljuk; ezt akkor tesszük helyesen, ha két, egymással equals objektum hashCode-ja megegyezik. Általában jó, ha mindegyik adattagnak van hatása a visszatérési értékre, és cél, hogy "jól szórjon" a művelet, azaz ritkán forduljon elő, hogy egymással nem equals objektumokhoz azonos értéket rendel.
-
Mi a Comparable?
-
Funkcionális interfész, alapértelmezett rendezést ad az őt implementáló osztálynak. Jellemzően class SajátOsztály implements Comparable<SajátOsztály> alakban használjuk, ekkor a művelete a public int compareTo(SajátTípus obj) alakot ölti. (Szinte) mindig így értendő a működése: ha a művelet visszatérési értéke nulla, akkor a this és az obj objektumok egyenlőek, különben az előjel mutatja a nagyobbat (pozitív: this, negatív: obj).