arckép

Neuwirth István

programtervező informatikus MSc – ELTE

Computational and Software Techniques MSc – Cranfield, UK

Elérhetőség
pitta2@gmail.com
+36 30 329 3039

Valid XHTML 1.0 Transitional

Valid CSS!

3. óra (2017.09.25.)

Diák

gyak3.pdf

Feladatok

equalstest.zip annak demonstrálására, hogy a == operátort csak primitív típusok összehasonlításánál használjuk, amúgy .equals-t hívjunk.

person_orig.zip kiegészítendő, hogy ellenőrizze a bemeneti paramétereket. (feladat megoldása)

Az előző feladat megoldásából kiindulva helyes equals implementálása (Object-beli equals felülírásával). (feladat megoldása)

Egyenlőségvizsgálat

A más nyelvekben megszokott == használata nem várt működéshez vezethet, itt ez – a primitíveket leszámítva – referenciaegyenlőséget jelent, azaz az operandusok egyezőségét vizsgálja (mindkét referencia ugyanarra az objektumpéldányra mutat-e).
Referenciatípusok esetén célszerű az equals metódust használni:

String alma1 = "alma";
String alma2 = "alm" + "a";
String alma3 = new String("alma");
String alma4 = "alm" + getChar();

Az alma1 és alma2 változók ugyanarra az objektumpéldányra fognak mutatni, ugyanis a Java fordítási időben kiértékeli az alma2 jobb oldalán álló kifejezést, a memóriafoglalást csökkentendő pedig az azonos szövegek nem foglalódnak külön karakterláncként. Eredmény: az alma1 == alma2 kifejezés értéke true.
Az alma3 esetén explicit új String példányt hoztunk létre, tehát az alma1 == alma3 kifejezés értéke false, azonban az alma1.equals(alma3) vagy az alma3.equals(alma1) kifejezés értéke igaz.
Az alma1 == alma4 kifejezés értéke szintén hamis, alma4 változó jobboldala futási időben kerül kiértékelésre.

OOP alapok

Osztályok, Objektumok

A this pszeudóváltozó

Konstruktorok

Létrehozás

Object

Vissza