當有若幹個變量參與運算時,結果類型取決於這些變量中表示范圍最大的那個變量類型。比如參與運算的變量中有整型,有雙精度浮點型,有短整型,那麼最後的結果類型就是double。
int a=1;
int b=2;
double c=(double)a/b;
上面的代碼中,a和b都是整型的,但是通過(double)a這種轉換將a轉換成一個匿名的變量,該變量的類型是double。但是要註意:a本身依舊是int類型,而不是double類型,這樣,(double)a/b就是double類型除以int類型,結果自然是double類型。
取模運算符:%;其實就是個求餘數的問題啦!
取模的結果符號永遠與被除數的符號相同。這個規則是很重要的。
例如:int a=5;
int b=-3;
int c=a%b;
則輸出的c的值就是2;
而如果int a=-5;
則上例中輸出的c的值就是-2;
關系運算符:大於(>)、 小於(<)、等於(==)、不等於(!=)、大於等於(>=)、小於等於(<=);關系運算的結果都是boolean值。
邏輯運算符:重點講解兩個,邏輯運算符本身也返回一個boolean值。
邏輯與:使用&&表示,邏輯與是一個雙目運算符(即有兩個操作數的運算符);邏輯與隻有當兩個操作數都為true的時候,結果才為真,其餘情況結果均為假。邏輯與表示的是並且的意思。
邏輯或:使用||表示,邏輯或也是一個雙目的運算符,邏輯或隻有當兩個操作數都是false的時候,結果才是false,其餘情況結果都是真的。邏輯或表示的是或者的意思,一種選擇的意思。
關於邏輯運算符的短路特性(這個很重要!)
1.邏輯與:如果第一個操作數為false,那麼結果肯定為false,所以將不會執行邏輯與後面的運算瞭,即發生瞭短路;
2、邏輯或:如果第一個操作數為true,那麼結果肯定為true,所以將不會執行邏輯或後面的運算瞭,也就是隨之發生瞭短路。
例如分析下面的代碼:
public class Operator2
{
public static void main(String[] args)
{
int a = 1;
int b = 2;
int c = 3;
int d = 4;
int f = 5;
boolean e =(a>b)&&((f=c)<d);
System.out.println(e);
System.out.println(f);
}
}
當我們判斷a>b為false時,那麼&&後面的操作數就不用執行瞭,所以這個時候e的值就是false瞭,而f的值還是最開始定義的那個,因為&&後面的沒有執行,所以f=c也就沒有被執行,這就是發生瞭短路,這個很重要,也很容易被忽視掉,這個一定要搞得很清楚才行。
關於變量的自增與自減運算:
a++和++a的說法:
int a=3;
int b = a++;
這個時候輸出的b是3;而a是4;
int a=3;
int b = ++a;
這個時候輸出的b是4;而a是4;
當++在前的時候是先對變量進行自增,然後再將自增之後的值賦給=左邊的變量;
而++在後的時候是先把變量的額值賦給左邊的變量,然後再將自增進行。
所以區別是在這裡的。
作者“黎黎原上草”