Java 8 Mathの新しいメソッド
1前書き
通常、Javaのバージョン8に付属している新機能について考えるとき、関数型プログラミングとラムダ式が最初に思い浮かぶものです。
それにもかかわらず、これらの大きな機能の他に、他にも影響が小さいかもしれませんが、興味深いことも多く、実際にはあまり知られていないか、レビューでカバーされていないことさえあります。
このチュートリアルでは、言語のコアクラスの1つに追加された新しいメソッドのそれぞれの簡単な例を列挙して説明します。
__https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html
2新しい
exact()メソッド**
まず、既存の最も一般的な算術演算のいくつかを拡張する新しい方法のグループがあります。
これから説明するように、派生メソッドとまったく同じ機能を持っていますが、例外が発生することを除いて、結果の値が最大値または最小値をオーバーフローするので、これらはまったく自明です。タイプ。**
これらのメソッドは、
integers
と
longs
の両方をパラメータとして使用できます。
2.1.
addExact()
2つのパラメータを追加し、
オーバーフローの場合に
ArithmeticException
をスローします(これはすべての
Exact()メソッドに適用されます)** 。
Math.addExact(100, 50); //returns 150
Math.addExact(Integer.MAX__VALUE, 1); //throws ArithmeticException
2.2.
substractExact()
最初のパラメータから2番目のパラメータの値を減算し、減算のオーバーフローの場合に
ArithmeticException
をスローします。
Math.subtractExact(100, 50); //returns 50
Math.subtractExact(Long.MIN__VALUE, 1);//throws ArithmeticException
2.3.
incrementExact()
オーバーフローの場合に
ArithmeticException
をスローして、パラメータを1つ増やします。
Math.incrementExact(100); //returns 101
Math.incrementExact(Integer.MAX__VALUE);//throws ArithmeticException
2.4.
decrementExact()
オーバーフローの場合は
ArithmeticException
をスローして、パラメータを1つ減らします。
Math.decrementExact(100); //returns 99
Math.decrementExact(Long.MIN__VALUE);//throws ArithmeticException
2.5.
multiplyExact()
2つのパラメータを掛けて、製品がオーバーフローした場合は
ArithmeticException
をスローします。
Math.multiplyExact(100, 5); //returns 500
Math.multiplyExact(Long.MAX__VALUE, 2);//throws ArithmeticException
2.6.
negateExact()
オーバーフローの場合に
ArithmeticException
をスローして、パラメータの符号を変更します。
この場合、メモリ内の値の内部表現について考えて、オーバーフローが発生する理由を理解する必要があります。残りの「正確な」方法ほど直感的ではありません。
Math.negateExact(100); //returns -100
Math.negateExact(Integer.MIN__VALUE);//throws ArithmeticException
2番目の例では、わかりにくいので説明が必要です。** オーバーフローは
Integer.MIN
VALUE
が-2.147.483.648であることと、反対側の
Integer.MAX
VALUE
が2.147.483.647であることが原因です。 1単位の
Integer
3その他の方法
3.1.
floorDiv()
最初のパラメータを2番目のパラメータで除算し、その結果に対して
floor()
演算を実行して、商以下の
Integer
を返します。
Math.floorDiv(7, 2)); //returns 3
正確な商は3.5なので
floor(3.5)
== 3です。
別の例を見てみましょう。
Math.floorDiv(-7, 2));//returns -4
正確な商は-3.5なので
floor(-3.5)
== -4です。
3.2.
modDiv()
これは前のメソッド
floorDiv()
と似ていますが、商の代わりに係数または除算の剰余に対して
floor()
操作を適用します。
Math.modDiv(5, 3)); //returns 2
ご覧のとおり、2つの正数に対する
modDiv()
は%operator
と同じです。別の例を見てみましょう。
Math.modDiv(-5, 3)); //returns 1
floorDiv(-5、3)
は-1ではなく-2であるため、2ではなく1を返します。
3.3.
nextDown()
パラメータのすぐ下の値を返します(
float
または
double
パラメータをサポート)
float f = Math.nextDown(3); //returns 2.9999998
double d = Math.nextDown(3);//returns 2.999999761581421
4結論
この記事では、バージョン8のJavaプラットフォームでクラス
java.lang.Math
に追加されたすべての新しいメソッドの機能について簡単に説明し、それらの使用方法の例をいくつか見ました。
いつものように、完全なソースコードはhttps://github.com/eugenp/tutorials/tree/master/core-java-8[over on GitHub]から入手できます。