java學習-基礎(2)

一、基本運算符
1、“++”
int a=2 ,b,c;
b=a++;
System.out.println(a);
System.out.println(b);
c=++a;
System.out.println(a);
System.out.println(c);
結果爲:3,2,4,4
怎麼記住到底是先加還是後加,網上也有很多“偏方”,其實意思都差不多,我自己喜歡念:”a加加”或者”加加a”,先念到哪個,就先用哪個,念“a加加”,先念到“a”,所以先用a的值,在加加,“加加a”就先加加了,在用a的值。

一個特殊的例子:
int i=2;
i=i++;
System.out.println(i);
int j=2;
j=++j;
System.out.println(j);
結果爲: 2 , 3。
下面這個還好理解,先加加,再賦值,確實是3,但是前面這個,不太好理解。
這裏寫圖片描述

上圖表示進行i++運算時,會先把i的值臨時存儲起來(圖中temp),兩個運算最終都會把值賦給i,但是,根據優先級,“++”優先級比“=”高,那麼先進行“++”運算,並且把值賦給i,然後進行“=”運算,而等號運算使用的是臨時值,再次把值賦給i,那最終i的值就是2了。

2、“+=”
int a=a+b;
int a+=b;
就單純的執行這兩條語句,不考慮編譯器的優化的話,a=a+b的執行效率是低於a+=b的,因爲它多進行了一步中間變量的操作,而且會多佔用一個變量的空間。而Java編譯器默認對其進行了優化,優化之後兩條語句都當做 a+=b來執行了,所以實際上是沒有任何區別的。

其實,“+=”還有一個好處是它底層包括了強制類型轉換,
a+=b等價於a=(int)(a+b),所以,直接int a=a+b可能會遇到類型轉換異常的問題,而a+=b不會。

3、“&”,“&&”,“|”和“||”
“&”和“&&”兩個邏輯運算符功能相同,但是運算方式有點區別,“&”不管左邊運算結果是true or false,都繼續運算右邊,而“&&”一旦左邊運算結果爲false,右邊就不再運算,直接輸出false。“|”和“||”同理。

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