Nové matematické metódy Java 8

1. Úvod

Zvyčajne, keď sa zamyslíme nad novými funkciami, ktoré prišli s verziou Java 8, je ako prvé potrebné myslieť na funkčné programovanie a výrazy lambda.

Okrem týchto veľkých funkcií však existujú aj ďalšie, ktoré môžu mať menší vplyv, ale tiež zaujímavé a mnohokrát nie veľmi známe alebo dokonca pokryté žiadnou recenziou.

V tomto tutoriáli uvedieme výčet a uvedieme malý príklad každej z nových metód pridaných do jednej zo základných tried jazyka: java.lang.Math.

2. Nové * presné () Metódy

Najskôr máme skupinu nových metód, ktoré rozširujú niektoré z existujúcich a najbežnejších aritmetických operácií.

Ako uvidíme, sú úplne vysvetľujúce, pretože majú úplne rovnakú funkcionalitu ako metódy, z ktorých však vychádzajú pridanie výnimky v prípade, že výsledná hodnota pretečie nad maximálnymi alebo minimálnymi hodnotami ich typov.

Tieto metódy môžeme použiť s oboma celé čísla a túži ako parametre.

2.1. addExact ()

Pridá dva parametre, hádzanie Aritmetická výnimka v prípade pretečenia (čo platí pre všetkých * Presné () metódy) dodatku:

Math.addExact (100, 50); // vráti 150 Math.addExact (Integer.MAX_VALUE, 1); // hodí ArithmeticException

2.2. substractExact ()

Substituuje hodnotu druhého parametra od prvého, pričom hodí znak Aritmetická výnimka v prípade pretečenia odčítania:

Math.subtractExact (100, 50); // vráti 50 Math.subtractExact (Long.MIN_VALUE, 1); // hodí ArithmeticException

2.3. incrementExact ()

Zvyšuje parameter o jednu, hodí znakom Aritmetická výnimka v prípade pretečenia:

Math.incrementExact (100); // vráti 101 Math.incrementExact (Integer.MAX_VALUE); // hodí ArithmeticException

2.4. decrementExact ()

Zníži parameter o jednu, hodí znakom Aritmetická výnimka v prípade pretečenia:

Math.decrementExact (100); // vráti 99 Math.decrementExact (Long.MIN_VALUE); // hodí ArithmeticException

2.5. multiplyExact ()

Vynásobte dva parametre hodením Aritmetická výnimka v prípade pretečenia produktu:

Math.multiplyExact (100, 5); // vráti 500 Math.multiplyExact (Long.MAX_VALUE, 2); // hodí ArithmeticException

2.6. negateExact ()

Zmení znamienko parametra hodením znaku Aritmetická výnimka v prípade pretečenia.

V tomto prípade musíme premýšľať o vnútornej reprezentácii hodnoty v pamäti, aby sme pochopili, prečo dochádza k pretečeniu, pretože to nie je také intuitívne ako ostatné „presné“ metódy:

Math.negateExact (100); // vráti -100 Math.negateExact (Integer.MIN_VALUE); // hodí ArithmeticException

Druhý príklad vyžaduje vysvetlenie, pretože nie je zrejmé: Prepad je spôsobený Celé číslo. MIN_VALUE je −2,147 483 688 a na druhej strane Celé číslo.MAX_VALUE je 2,147,483,647 takže vrátená hodnota sa nezmestí do Celé číslo o jednu jednotku.

3. Iné metódy

3.1. floorDiv ()

Rozdelí prvý parameter druhým a potom vykoná a poschodie () operácia nad výsledkom, vrátenie Celé číslo to je menšie alebo rovné kvocientu:

Math.floorDiv (7, 2)); // vráti 3 

Presný kvocient je 3,5, teda poschodie (3,5) == 3.

Pozrime sa na ďalší príklad:

Math.floorDiv (-7, 2)); // vráti -4 

Presný kvocient je -3,5, takže poschodie (-3,5) == -4.

3.2. modDiv ()

Tento je podobný predchádzajúcej metóde floorDiv (), ale uplatnenie poschodie () operácia nad modulom alebo zvyškom delenia namiesto kvocientu:

Math.modDiv (5, 3)); // vráti 2 

Ako vidíme, modDiv () pre dve kladné čísla je to isté ako operátor%. Pozrime sa na iný príklad:

Math.modDiv (-5,3)); // vráti 1 

Vracia 1 a nie 2, pretože floorDiv (-5, 3) je -2 a nie -1.

3.3. nextDown ()

Vráti okamžite nižšiu hodnotu parametra (podporuje plavák alebo dvojitý parametre):

float f = Math.nextDown (3); // vráti 2,9999998 double d = Math.nextDown (3); // vráti 2,999999761581421

4. Záver

V tomto článku sme stručne opísali funkčnosť všetkých nových metód pridaných do triedy java.lang.Math vo verzii 8 platformy Java a tiež si všimol niekoľko príkladov, ako ich používať.

Celý zdrojový kód je ako vždy k dispozícii na serveri GitHub.


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