java中的一元加減運算符

      不得不說,在沒學《Java編程思想》之前,我對Java的學習只是“知其然”,即只是知道該這樣用而已,但是當你看了《Java編程思想》之後,才真正明白什麼叫做“知其所以然”。當然這句話並不是我說的,而是某位大佬說的,這裏就引用一下吧。

      今天學習到第三章的一元加(+)減(-)運算符,從字面上講,這兩個符號的操作數只有一個,而且他們與二元加減運算符都使用相同的符號,編譯器會根據表達式的書寫形式來判斷是哪一種。比如:

        x = -a;

上面這條語句很顯然,無論是編譯器還是讀者都能讀出這裏的減號是一元減號運算符,但是下面的語句可能就會不一樣了。

        x = a * -b;

這樣的語句編譯器能正確讀出來,但是讀者可能就會搞糊塗,所以有時需要明確地寫成這樣:

       x = a * (-b);

接下來纔是我寫這篇文章的目的:

       《Java編程思想》原文中對這兩個符號的作用做了這樣的總結:

        一元減號用於轉變數據的符號,而一元加號只是爲了與一元減號相對應,但是它唯一的作用僅僅是將較小類型的操作數提升爲int。

           加亮的這句話第一次看的時候看不懂,因爲根據我自己無法用代碼去證明這句話的正確性,於是我在網絡上搜了一下,發現網絡上的回答也只是一知半解,於是自己找樂原版英文書,發現書中原文是這樣子的。

     高亮中文部分在我淺顯的英文功力面前的理解是沒有“它唯一的作用僅僅是將較小類型的操作數提升爲int.”這句話,也就是它除了和一元減號運算符相呼應之外沒有任何的作用。但是中文版既然加上去了也不能說它錯吧,肯定是在翻譯的時候Java已經變了,於是就增加了上去(我自己的理解)。

不過後來問了網絡上的大佬終於給證明出來了。如下:

public class Yiyuan {
     public static void main(String[] args) {
          //定義一個byte類型變量
          byte b = 1;
          //用一元加號後賦值給c,發現報錯。
          byte c = +b;
          //再賦值給整型變量d後能編譯通過,證明b編程了int型。
          int d = +b;
     }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章