2014-01-24 31 views
1

每個人都知道在Java中簡單的算術題是如何工作的原語: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類中,爲什麼它不能實現一個接口,該接口只說明在類上調用操作符時要執行的操作。這個概念並沒有太多提及,我的意思是它與"Hello World!".toString()和重載的運算符+一起使用,並且將大大簡化上述基於類的算術。

+1

這樣的註釋放在哪裏? –

+2

請搜索「運算符重載[java]」。這個問題是許多老問題的重複。這是一個複雜的問題,沒有答案可以爲你解決問題。 –

回答

1

這是因爲java不支持運算符重載,如。看看他們的語言。此外,groovy使用BigDecimal作爲非整數操作的主要類型。它支持所有這些基本操作。