每个人都知道 Java 中的简单算术如何用于基元:
int one = 1,two = 2,three = one + two;
double four = (one + two) / three;
if(four % 1 == 0){
System.out.println("Yay for simple maths!");
} else{
throw new RealityError("http://www.youtube.com/watch?v=H91rPIq2mN4");
}
但是当你离开原始类型的那一刻,事情就变得很快复杂了!尝试重复之前的简单算术是一个很大的挑战!
BigInteger bigOne = BigInteger.ONE, bigTwo = BigInteger.valueOf(2),
bigThree = bigOne.add(bigTwo);
BigDecimal bigFour = new BigDecimal(bigThree.divide(bigOne.add(bigTwo)));
if (BigInteger.valueOf(bigFour.longValueExact()).mod(BigInteger.ONE).equals(BigInteger.ZERO)) {
System.out.println("Yay for simple maths?!?!");
} else {
throw new RealityError("http://www.youtube.com/watch?v=H91rPIq2mN4");
}
为什么像 +, -, *, or /
这样的运算符不使用注释?如@DefaultAddOperator
对于扩展 Number 的类。或者,在 BigInteger 类中,为什么它不能实现一个接口(interface)来简单地说明在类上调用运算符时要执行的操作。这个概念并不太牵强,我的意思是它与 "Hello World!".toString()
一起使用。和重载运算符 +
,并且会大大简化上述基于类的算术。
最佳答案
关于非原始数简单算术的 Java 注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21325143/