2012-07-15 62 views
1

(i += 1)相當於i = i + 1在java中使用*乘法?

是有可能通過乘法像有東西像上面:

(i *= 1)i = i * 1

我必須聲明爲雙嘗試,但我一直得到0.0的值我的結果?

+0

您可以使用調試器只是乘法之前,只是相乘後得到我的價值。對的,這是可能的。 – 2012-07-15 16:20:53

回答

1

首先聲明double i = 1.0;(或int i = 1;如果不需要十進制值)。看來你正在乘以零。當然,然後i1將永遠是1,除非您在其他地方修改i的值。

除此之外,請注意i *= 1差不多相當於i = i * 1。魔鬼是在細節上,作爲第一形式將執行的隱式轉換爲每Java語言規範,部分§5.1.3

化合物賦值表達式自動轉換所述計算的結果,他們執行到變量的類型在他們的左邊。如果結果的類型與變量的類型相同,則強制轉換不起作用。但是,如果結果的類型比變量的寬度大,則複合賦值運算符執行無聲縮小基元轉換

3

這聽起來像你正在乘以零。

0 * 1 = 0

+0

然後任何解決方案,可以像上面那樣做 – cchua 2012-07-15 15:58:43

+0

@cchua:你明白問題是什麼? – SLaks 2012-07-15 15:59:12

+0

雅我知道,因爲我聲明的值爲0,所以它保持乘法0.所以,你有任何其他的方式來做這個,而不是隻使用'* =' – cchua 2012-07-15 16:02:22

1

i如果沒有分配值乘以然後前(零以外)將是0 * 1等於0

1

它將採用默認值double,如您在類範圍中聲明的那樣...

嘗試......

class Test implements TestInterface { 


     public static void main(String[] args){ 
      double i = 1; 
      System.out.println(i *= 1); 
     } 
    }