Java 8 Matematika nove metode
1. Uvod
Obično kad razmišljamo o novim značajkama koje su došle s verzijom 8 Jave, funkcionalno programiranje i lambda izrazi su prve stvari koje nam padnu na pamet.
Unatoč tome, osim tih velikih značajki, postoje i druge, možda s manjim utjecajem, ali također zanimljive i često ne baš poznate ili čak pokrivene bilo kojom recenzijom.
U ovom uputstvu nabrojat ćemo i dati mali primjer svake od novih metoda dodanih u jednu od osnovnih klasa jezika: java.lang.Math.
2. Novo *točno() Metode
Prvo, imamo skupinu novih metoda koje proširuju neke od postojećih i najčešćih aritmetičkih operacija.
Kao što ćemo vidjeti, prilično su razumljivi, budući da imaju potpuno istu funkcionalnost od metoda iz kojih proizlaze, ali sa kojima dodatak izbacivanja iznimke u slučaju da rezultirajuća vrijednost prelazi maksimalnu ili minimalnu vrijednost njihovih vrsta.
Ove metode možemo koristiti s obje cijeli brojevi i čezne kao parametri.
2.1. addExact ()
Dodaje dva parametra, bacajući an ArithmeticException u slučaju prelijevanja (što vrijedi za sve *Točno() metode) od dodavanja:
Math.addExact (100, 50); // vraća 150 Math.addExact (Integer.MAX_VALUE, 1); // baca ArithmeticException
2.2. substrateExact ()
Oduzima vrijednost drugog parametra prvom, bacajući ArithmeticException u slučaju prelijevanja oduzimanja:
Math.subtractExact (100, 50); // vraća 50 Math.subtractExact (Long.MIN_VALUE, 1); // baca ArithmeticException
2.3. inkrementExact ()
Povećava parametar za jedan, bacajući ArithmeticException u slučaju prelijevanja:
Math.incrementExact (100); // vraća 101 Math.incrementExact (Integer.MAX_VALUE); // baca ArithmeticException
2.4. decrementExact ()
Parametar se smanjuje za jedan bacajući ArithmeticException u slučaju prelijevanja:
Math.decrementExact (100); // vraća 99 Math.decrementExact (Long.MIN_VALUE); // baca ArithmeticException
2.5. multiplyExact ()
Pomnožite dva parametra, bacajući znak ArithmeticException u slučaju prelijevanja proizvoda:
Math.multiplyExact (100, 5); // vraća 500 Math.multiplyExact (Long.MAX_VALUE, 2); // baca ArithmeticException
2.6. negateExact ()
Mijenja znak parametra, bacajući znak ArithmeticException u slučaju prelijevanja.
U ovom slučaju, moramo razmisliti o unutarnjem predstavljanju vrijednosti u memoriji da bismo razumjeli zašto postoji prelijevanje, što nije tako intuitivno kao i ostale "točne" metode:
Math.negateExact (100); // vraća -100 Math.negateExact (Integer.MIN_VALUE); // baca ArithmeticException
Drugi primjer zahtijeva objašnjenje jer nije očito: Preljev je zbog Cijeli broj.MIN_VALUE je -2,147.483.648, a s druge strane Cijeli broj.MAX_VALUE biti 2.147.483.647 tako da se vraćena vrijednost ne uklapa u Cijeli broj za jednu jedinicu.
3. Ostale metode
3.1. floorDiv ()
Dijeli prvi parametar s drugim, a zatim izvodi a kat() operacija nad rezultatom, vraćanje Cijeli broj koji je manji ili jednak količniku:
Math.floorDiv (7, 2)); // vraća 3
Točan količnik je 3,5 dakle pod (3,5) == 3.
Pogledajmo još jedan primjer:
Math.floorDiv (-7, 2)); // vraća -4
Točan količnik je -3,5 dakle pod (-3,5) == -4.
3.2. modDiv ()
Ova je slična prethodnoj metodi floorDiv (), ali primjenom kat() operacija nad modulom ili ostatkom dijeljenja umjesto količnika:
Math.modDiv (5, 3)); // vraća 2
Kao što vidimo, modDiv () za dva pozitivna broja je isto što i% operator. Pogledajmo drugačiji primjer:
Matematika.modDiv (-5, 3)); // vraća 1
Vraća 1, a ne 2 jer katDiv (-5, 3) je -2, a ne -1.
3.3. nextDown ()
Vraća odmah nižu vrijednost parametra (supports plutati ili dvostruko parametri):
plutajuće f = Math.nextDown (3); // vraća 2.9999998 double d = Math.nextDown (3); // vraća 2.999999761581421
4. Zaključak
U ovom smo članku ukratko opisali funkcionalnost svih novih metoda dodanih u razred java.lang.Math u inačici 8 Java platforme i također vidjeli neke primjere kako ih koristiti.
Kao i uvijek, puni izvorni kod dostupan je na GitHub-u.