Java 8 Math új módszerek

1. Bemutatkozás

Általában, amikor a Java 8. verziójával járó új funkciókra gondolunk, először a funkcionális programozás és a lambda kifejezések jutnak eszünkbe.

Mindazonáltal ezeken a nagyszerű tulajdonságokon kívül vannak mások is, amelyek talán kisebb hatással bírnak, de érdekesek is, és sokszor nem igazán ismertek, vagy akár egyetlen áttekintés sem foglalkozik velük.

Ebben az oktatóanyagban felsoroljuk és adunk egy kis példát a nyelv egyik alapvető osztályához hozzáadott új módszerre: java.lang.Math.

2. Új *pontos() Mód

Először is van egy új módszercsoportunk, amely kiterjeszti a meglévő és leggyakoribb számtani műveletek egy részét.

Amint látni fogjuk, eléggé magától értetődőek, mivel pontosan ugyanolyan funkcionalitással rendelkeznek, mint azok a módszerek, amelyekből származnak, de amelyekkel Kivételes dobás hozzáadása abban az esetben, ha a kapott érték túlcsordítja típusaik max vagy min értékét.

Ezeket a módszereket mindkettővel alkalmazhatjuk egész számok és vágyakozik mint paramétereket.

2.1. addExact ()

Hozzáadja a két paramétert, dob egy Számtani kivétel túlcsordulás esetén (ami mindenkire érvényes *Pontos() mód) a kiegészítésből:

Math.addExact (100, 50); // a 150 Math.addExact értéket adja vissza (Egész számMAX_VALUE, 1); // dobja ArithmeticException

2.2. subtractExact ()

Kivonja a második paraméter értékét az elsőből, an-t dobva Számtani kivétel kivonás túlcsordulása esetén:

Math.subtractExact (100, 50); // // 50 Math.subtractExact (Long.MIN_VALUE, 1) eredményt ad; // dobja ArithmeticException

2.3. incrementExact ()

Növeli a paramétert eggyel, dob egy Számtani kivétel túlcsordulás esetén:

Math.incrementExact (100); // a 101 Math.incrementExact (Integer.MAX_VALUE) értéket adja vissza; // dobja ArithmeticException

2.4. decrementExact ()

Csökkenti a paramétert eggyel, és dob egy Számtani kivétel túlcsordulás esetén:

Math.decrementExact (100); // visszaadja a 99 Math.decrementExact (Long.MIN_VALUE) értéket; // dobja ArithmeticException

2.5. multiplyExact ()

Szorozza meg a két paramétert, és dobjon egy Számtani kivétel a termék túlcsordulása esetén:

Math.multiplyExact (100, 5); // // 500 Math.multiplyExact-ot ad vissza (Hosszú.MAX_VALUE, 2); // dobja ArithmeticException

2.6. negateExact ()

Megváltoztatja a paraméter előjelét, és egy Számtani kivétel túlcsordulás esetén.

Ebben az esetben gondolkodnunk kell a memória értékének belső ábrázolásán, hogy megértsük, miért van túlcsordulás, ami nem annyira intuitív, mint a többi „pontos” módszer:

Math.negateExact (100); // a -100 Math.negateExact (Integer.MIN_VALUE) értéket adja vissza; // dobja ArithmeticException

A második példa magyarázatot igényel, mivel ez nem nyilvánvaló: A túlcsordulás a Egész szám.MIN_VALUE hogy −2.147.483.648, a másik oldalon pedig Egész.MAX_VALUE lévén 2.147.483.647 tehát a visszaadott érték nem fér bele egy Egész szám egy egységgel.

3. Egyéb módszerek

3.1. floorDiv ()

Elosztja az első paramétert a másodikkal, majd elvégzi a padló() művelet az eredmény felett, a Egész szám amely kisebb vagy egyenlő a hányadossal:

Math.floorDiv (7, 2)); // 3-at ad vissza 

A pontos hányados 3,5 tehát emelet (3.5) == 3.

Nézzünk meg egy másik példát:

Math.floorDiv (-7, 2)); // -4-et ad vissza 

A pontos hányados -3,5 tehát emelet (-3,5) == -4.

3.2. modDiv ()

Ez hasonló az előző módszerhez floorDiv (), de a padló() művelet az osztás modulusán vagy fennmaradó részén a hányados helyett:

Math.modDiv (5, 3)); // visszatér 2-re 

Mint láthatjuk, a modDiv () két pozitív szám esetén megegyezik a% operátorral. Nézzünk meg egy másik példát:

Math.modDiv (-5, 3)); // 1-et ad vissza 

1-et ad vissza, nem pedig 2-t, mert floorDiv (-5, 3) értéke -2 és nem -1.

3.3. nextDown ()

Visszaadja a paraméter azonnal alacsonyabb értékét (támogatja úszó vagy kettős paraméterek):

float f = Math.nextDown (3); // visszatér 2,9999998 dupla d = Math.nextDown (3); // a 2.999999761581421 értéket adja vissza

4. Következtetés

Ebben a cikkben röviden ismertettük az osztályhoz hozzáadott összes új módszer működését java.lang.Math a Java platform 8. verziójában, és néhány példát is látott a használatukról.

Mint mindig, a teljes forráskód elérhető a GitHubon.


$config[zx-auto] not found$config[zx-overlay] not found