Jelenlegi hely

Utolsó változások

8.2.1. Sztring objektumok létrehozása

A sztringet gyakran egy sztring konstansból, egy karaktersorozatból készítjük. A StringsDemo program is ezt a módszert használja, hogy létrehozzon egy sztringet, amire a palindrome változóval hivatkozik:

String palindrome = "Dot saw I was Tod";

8.2. String, StringBuffer és StringBuilder osztály

A Java platform a kezdetektől fogva biztosított két osztályt, melyekkel tárolhatunk, illetve manipulálhatunk sztringeket, ezek a String és a StringBuffer. A String osztályban olyan sztringeket tárolunk, melyek értéke nem fog változni. A StringBuffer osztályt akkor használjuk, ha a szövegen szeretnénk változtatni, ezt elsősorban dinamikus karakterlánc készítésekor (pl. fájlból olvasás) használjuk. A StringBuffer-ek használata biztonságos több szálas környezetben.

8.1. A Character osztály

Egy Character típusú objektum egyetlen karakter értéket tartalmaz. A Character objektumot az egyszerű char változó helyett használjuk, amikor objektum szükséges, például: amikor átadunk egy karakter értéket egy metódusnak, ami megváltoztatja az értéket, vagy amikor egy karakter értéket helyezünk el egy adattárolóban, mint például egy ArrayList-ben, ami objektumokat tud csak tárolni, primitív értékeket nem.

Megjegyzés: a burkoló (csomagoló) osztályokról a következő fejezetben lesz szó.

7.6. Ellenőrző kérdések

  • Mikor lehet egy objektumot paraméter nélkül létrehozni? Mikor nem?
  • Hogy lehet egy objektum adattagjainak kezdőértékét beállítani? Mi történik, ha ezt nem tesszük meg?
  • Mi történik azokkal az objektumokkal, amelyekre már nem hivatkozik a futó program?
  • Mikor fut le a szemétgyűjtő algoritmus? Hogyan működik?
  • Hogy néz ki Javában a destruktor?

Mi a hiba a következő programban?

7.5. Takarítás

Mielőtt egy objektum a szemétgyűjtőbe kerülne, a gyűjtő lehetőséget ad az objektumnak, hogy kitakarítson maga után úgy, hogy meghívja az objektum finalize metódusát.

A finalize metódus az Object osztály tagja, ami minden osztály szülőosztálya, a hierarchia tetején áll. Egy osztály felülírhatja a finalize metódust, ha szükséges, de ekkor a metódus legvégén meg kell hívnia a super.finalize() függvényt.

7.4. Nem használt objektumok eltávolítása

A Java platform lehetővé teszi annyi objektum létrehozását, amennyit csak akarunk (korlát csak az, hogy mennyit tud kezelni a rendszerünk), és nem kell aggódnunk a megszüntetésük miatt. A futtatókörnyezet törli az objektumokat, ha többet már nem használjuk. Ez a szemétgyűjtés.

Egy objektum akkor törölhető, ha már nincs rá több hivatkozás. Meg lehet szüntetni egy objektumot úgy is, hogy a hivatkozását null értékre állítjuk. Egy objektumra több hivatkozás is lehet, ezeket mind meg kell szüntetni, hogy az objektum a szemétgyűjtőbe kerülhessen.

7.3. Metódushívás

Itt is használható ugyanaz a forma, mint a változóknál. A metódus neve utáni zárójelekben adhatók meg a paraméterek. Ha nincsenek, üres zárójelet kell írnunk.

objectReference.methodName(argumentList);
objectReference.methodName();

Az objektum referencia itt is lehet változó vagy kifejezés:

new Rectangle(100, 50).area();

A kifejezés egy hivatkozást ad vissza a Rectangle objektumra. A pont után írva a metódus nevét, az végrehajtódik az új Rectangle objektumon.

7.2. Hivatkozás egy objektum tagjaira

Ha létrehozunk egy objektumot, valószínűleg használni is akarjuk valamire. Ennek két módja lehet:

  • módosítani vagy megnézni a tagváltozóit
  • meghívni a metódusait

Általános formája:

objectReference.variableName

Amikor egy változó az érvényességi körén belül van – itt az osztályon belül –, használható az egyszerű hivatkozás is.

7.1.3. Objektum inicializálása

A Point osztály kódja:

public class Point {
    public int x = 0;
    public int y = 0;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

Ez az osztály egy konstruktort tartalmaz. A konstruktornak ugyanaz a neve, mint az osztálynak, és nincs visszatérési értéke. A Point osztály konstruktora két egész típusú paramétert kap: (int x, int y). A következő utasítás a 23 és 94 értékeket adja át paraméterként:

Oldalak