2013-10-03 70 views
0

我有下面的代碼:在Java中使用= +運算符?

public class Operators { 
    public static void main(String[] args) { 
     int i =+ 2; 
     System.out.println(i); 
    } 
} 

在執行了,我發現了以下的輸出:

那麼,是什麼=+運營商實際上沒有在這裏?

編輯:

正如一些回答,這是分配給+2i,考慮下面的代碼:

public class Operators { 
    public static void main(String[] args) { 
     int i =- -2; 
     System.out.println(i); 
    } 
} 

因此,在上述情況下,輸出應爲-2。但我發現了2

,所以我想,這是-(-2),這給2Right

+0

'= +'是二運算符'='和前綴'+'單一。 –

+4

如果它寫成'i = + 2',這與'i = 2'相同,它可能會更好。但是如果我說'我= -2'我認爲它會更有意義... – MadProgrammer

+1

你知道嗎?閱讀[什麼是= JavaScript中的意思](http://stackoverflow.com/questions/15129137/what-does-mean-in-javascript)'= +'在JavaScript中很有趣。 –

回答

7
int i =+ 2; 

這是積極的2(+2)賦值給變量我。更miningful還是可以理解的,如果你寫像 - int i = +2;

再舉一個例子 -

int i = 2; 
i=+3; 
System.out.println(i); 

它打印3.

+一元加操作;表示 正值(數字 積極不這樣做,不過)

更多的例子 - http://docs.oracle.com/javase/tutorial/displayCode.html?code=http://docs.oracle.com/javase/tutorial/java/nutsandbolts/examples/UnaryDemo.java

+0

感謝編輯Suresh :) –

+0

請參閱我的編輯... :) –

+0

是的,你是對的Gokul –

2

你正在設定我等於+2,這就是你得到的。你期待什麼樣的輸出?

+1

爲什麼我會被downvoted爲正確的答案?我真的需要解釋一下,+2意味着積極的2嗎? –

+0

答案需要更多的細節才能正確地成爲答案。 – Zyerah

2

說罷:

int i =+ 2; 

+充當unary operator

詳細說明,它將i設置爲正值2

編輯:您的更新說:

int i =- -2; 

產生2.爲什麼?

在這種情況下,它意味着i=-(-(2))。請注意,如果值爲Integer.MIN_VALUE,則使用一元減算子可能會產生意外的結果。

+0

看我的編輯... :) –

+0

@Gokul更新了帖子。 – devnull

2

我相信你的意思是通過= +是真的+ =。

您的代碼將+2(正數2)的值分配給整數。

例如:

int x =+ 4; 
x =+ 8; 
Console.WriteLine(x.ToString()); 
Console.ReadLine(); 

將打印 「8」,而不是12。這是因爲你指定x到+4,然後+8。

如果您詢問+ =是什麼,它會將初始變量添加到其中。

x += 8 

相同

x = x + 8 

通過改變前面的例子形式= +到+ =給我們:

int x = 4; 
x += 8; 
Console.WriteLine(x.ToString()); 
Console.ReadLine(); 

將打印 「12」。

+0

爲什麼投下投票?解答原始問題,以及解釋看起來是一個錯字。 – user2841290

0

針對一元運算符請參考下圖。

enter image description here

這裏是一個〔實施例來理解它。

public class UnaryDemo { 
    public static void main(String[] args) { 
     int x = 10; 
     int y = 20; 

     int result = +x; 

     System.out.println("+x = " + result); 

     result = -y; 

     System.out.println("-y = " + result); 
     } 
    } 

和輸出

+x = 10 
-y = -20 

因此,認爲運營商作爲variable = +value而非variable =+ values。是的,這個空間使它更具可讀性。

0

所有其他人都回答了,我想給JLS參考。

int i =- -2; 

正如jls

  • 一元數值提升指定
    回答您的編輯(§5.6.1)的操作數執行。
  • 一元減號表達式的類型是操作數的提升類型。
  • 在運行時,一元減表達式的值是操作數升級值的算術否定。

所以,

System.out.println(i); //prints 2 

對於整數值,否定是與從零減法。


對於浮點值,否定是不一樣的從零減法,因爲如果x爲0.0,則0.0-x是0.0,但-x是 - 0.0。

一元減號只是反轉浮點數的符號。特殊情況:

  • 如果操作數是NaN,則結果是NaN。 (回想NaN沒有符號(§4.2.3)。)

  • 如果操作數是無窮大,結果是相反符號的無窮大。

  • 如果操作數爲零,則結果爲相反符號的零。

有用鏈接

  1. unary operators
  2. Unary Numeric Promotion