BigInteger added a set of methods to the JAVA8:
1 2 3 |
Public byte bytevalueexact() public int Intvalueexact() Public long Longvalueexact() |
These methods are followed by exact (), and in the old JDK version, there are already bytevalue,intvalue,longvalue () Why do you need to add these methods?
Because in the original method, if the value of BigInteger overflow the scope of the target type, there is no hint, then our program is likely to be executed under a very subtle error, there is no error output, but the program will continue to execute, this error is difficult to find ..... (As you can imagine, a value is suddenly changed, not very carefully, it's hard to see),
With the new Xxxexact () method, this is all well done, and the Xxxexact () method throws an exception when it overflows
1 2 3 4 5 6 |
PublicLong Longvalueexact () { if (Mag.length <= 2 && bitlength () <= 63) return longvalue else throw new arithmeticexception ( "BigInteger out of long range ") /span> |
In this way, we can get a notification when the overflow is processed.