java默认情况下是不会检查数字溢出的,是否有办法让它检查呢,例如下面代码:
[code="java"]
//溢出
short a = Short.MAX_VALUE;
//溢出了但是没有异常
a += 1;
System.out.println(String.format("a is %s",a));
[/code]
我查了一些资料,有的说是出于性能考虑没有做溢出检测,有办法检测吗?
我知道在c#中可以通过checked关键字来设置,不知道java中是否有类似的机制
java默认情况下是不会检查数字溢出的,是否有办法让它检查呢,例如下面代码:
[code="java"]
//溢出
short a = Short.MAX_VALUE;
//溢出了但是没有异常
a += 1;
System.out.println(String.format("a is %s",a));
[/code]
我查了一些资料,有的说是出于性能考虑没有做溢出检测,有办法检测吗?
我知道在c#中可以通过checked关键字来设置,不知道java中是否有类似的机制
[code="java"] public static short checkAndAdd(short a, short b) {
if (Short.MAX_VALUE - a < b) {
throw new ArithmeticException("Overflow");
}
return (short)(a + b);
}[/code]
apache 的 common math 包有类似的方法