2011-12-07 142 views
0

任何人都可以解釋我這個奇怪的Java行爲

int i=2; 
int j=+-i;//-+i; 

j=-2值在+-i-+i無論是哪種情況。

這在Java中很好嗎?或者這應該是一個編譯器錯誤?

Thankx提前。

回答

11

這很好 - 你剛剛有兩個一元操作符在一起。所以,它要麼:

int j = +(-i); 

int j = -(+i); 

見這兩個運營商sections 15.15.3和JLS的15.15.4

+0

尼斯鏈接:) +1 – mprabhat

2

這絕對沒問題。通過java中的Unary Operators進行搜索

這兩種情況都是類似的,最終結果與以不同順序執行的相同操作保持相同!

2

想想這樣:int j = +i將對應於int j = i。因此,-+i+-i將是-i

2

你申請兩個一元運營商i

int j = +-i; 

相當於

int j = +(-i); 

,同樣爲-+i。結果與否定i相同,除非i等於Integer.MIN_VALUE(在這種情況下j結束等於i)。