Jelenlegi hely

9.1. A csomagoló osztályok néhány használata

  • Tudunk használni olyan tároló objektumokat, amelyekbe különböző típusú számok helyezhetők bele. Pl. az ArrayList osztály Object-eket tud tárolni, így akár az Object különböző leszármazott objektumait (vagyis csomagoló objektumokat) el tudunk helyezni benne.
  • Az előző ponthoz hasonlóan akár más típusú objektumokkal is tudunk együtt tárolni számokat.
  • Az osztályok definiálnak hasznos változókat, mint például MIN_VALUE vagy MAX_VALUE, ezek biztosítják az általános információt az adattípusról. Az osztályok definiálnak hasznos metódusokat, amelyek értéket konvertálnak más típussá, például String-gé, vagy egy másik szám típussá.

Továbbá a BigInteger és BigDecimal kiterjeszti a hagyományos adattípusokat, és tetszőleges pontosság alkalmazását engedi meg. A többi osztály a java.lang csomag része, a BigDecimal és a BigInteger a java.math csomagban található.

Következzen egy példa (NumberDemo), amely létrehoz két Float és egy Double objektumot, és utána használja a compareTo és az equalTo metódusokat összehasonlításra.

public class NumberDemo {
    public static void main(String args[]) {
        Float floatOne = new Float(14.78f - 13.78f);
        Float floatTwo = Float.valueOf("1.0");
        Double doubleOne = new Double(1.0);
        int difference = floatOne.compareTo(floatTwo);
        if (difference == 0) {
            System.out.println("floatOne is equal to floatTwo.");
        } else if (difference < 0) {
             System.out.println("floatOne is less than floatTwo.");
        } else if (difference > 0) {
             System.out.println("floatOne is greater than floatTwo.");
        }
        System.out.println("floatOne is " + ((floatOne.equals(doubleOne)) ? "equal" : "not equal") + " to doubleOne.");
    }
}

Ennek a programnak a kimenete kicsit meglepő lehet:

floatOne is equal to floatTwo.
floatOne is not equal to doubleOne.

A következő táblázat bemutatja azon példánymetódusokat, melyeket a Number osztály összes leszármazott osztálya tartalmaz, beleszámítva az összehasonlító és egyenlőség-vizsgáló metódusokat, melyek az előző példában szerepeltek.

  • byte byteValue() short shortValue() int intValue() long longValue() float floatValue() double doubleValue() Konvertálja a szám objektum értékét egy egyszerű adattípussá (short, long, float, doube)
  • int compareTo(Integer) int compareTo(Object) Összehasonlítja a szám objektumot a paraméterrel. A metódus nullánál kisebb, nulla, vagy nullánál nagyobb értékkel tér vissza attól függően, hogy az objektum értéke kisebb, egyenlő vagy nagyobb a hasonlított objektummal.
  • boolean equals(Object) Meghatározza, hogy a szám objektum egyenlő-e a paraméterrel.

Különböző típusú szám objektumok – a matematikai értéküktől függetlenül – sosem egyenlőek.

A szám csomagoló osztályok több hasznos publikus és statikus konstanst tartalmaznak. Ezekre úgy tudunk hivatkozni kifejezésekben, hogy az osztály nevét és a konstanst egy ponttal választjuk el, pl. Integer.MIN_VALUE.

A következő táblázat felsorol több hasznos konstanst a Float és Double osztályokból

  • Float.NaN Double.NaN Nem szám. Ez az alapértelmezett érték, ha egy kifejezés értéke matematikailag nem értelmezhető.
  • Float.NEGATIVE_INFINITY Double.NEGATIVE_INFINITY Negatív végtelen érték
  • Float.POSITIVE_INFINITY Double.POSITIVE_INFINITY Pozitív végtelen érték