上篇文章我們剛剛研究了java中的變量和資料類型,這節課我們來介紹一下java中的運算符。java中的運算符主要分為:
算數運算符,指派運算符,關系運算符,邏輯運算符,位運算符和三目運算符。我們分别來看。
1. 算數運算符
算數運算符主要包括:+、-、*、/、%、++和--
+:代表加法運算
-:代表減法運算
* :代表乘法運算
/: 代表求商的運算
%:代表取餘數的運算
這幾個裡邊要注意,整數和整數相運算得到的還是整數,如果想要的到小數,那麼需要讓小數參與運算。詳見如下的代碼
System.out.println(15/2);//7,得到的結果還是整數
System.out.println(15%2);//1,取餘數
System.out.println(1.0*15/2);//7.5,讓小數參與運算
System.out.println(15/2*1.0);//7.0,注意運算順序,第一步得到7,7*1.0=7.0
複制
接下來我來看一下++ 這個運算符,這個++ 運算符是分為前++和後++兩種運算,而--的運算規則和++一樣。
前++和後++ 在單獨使用的時候,運算規則是一樣的,就是單純的加1操作。
int a= 0;
int b= 0;
a++;
b++;
System.out.println(a);//1
System.out.println(b);//1
複制
但是在和其他運算符放到一起的時候,使用起來就是有差別的。前加加的運算規則是先加1在運算(包括指派,列印等),後加加的運算規則是先運算後加1;
int a = 0;
int b = 0;
int c = a++;
int d = ++b;
System.out.println(a);//1,做了+1操作
System.out.println(b);//1,做了+1操作
System.out.println(c);//0,後加加,先做運算,這裡的運算指的就是指派,是以先指派,c變成0,指派後,a+1變成1;
System.out.println(d);//1,前加加,先+1,b變成1,再運算,即指派運算,把1指派給d
複制
同時要注意,這個列印語句,也屬于運算。
int a = 0;
int b = 0;
System.out.println(a++);//0,後加加,先運算,即列印,列印完了以後,a+1變成1
System.out.println(++b);//1,前加加,先加1,b變成1,在列印。
複制
ok,減減的用法和加加一樣。
2. 指派運算符
指派運算符中,最常見的就是“=”,a=4;實際就是把等号右邊的4指派給等号左邊的變量a,是以a的值變成了4.
在指派運算符中,除了等号以外,還有這麼幾種,
分别是:+=,-=,*=,/=,%=
這幾個也是比較常見的,需要注意的是,指派運算符的左邊必須是變量,不能是常量。
而這個+=的運算規則是這樣的,
a+=b;就相當于a=a+b;
隻不過在+=中實際上包含了一個強制的類型轉換。這個我們通過一道經典的面試題來了解一下。
short s = 1;
s=s+1;和s+=1;哪句代碼編譯成功,哪句代碼編譯失敗
s=s+1;這句代碼是有問題的,為什麼呢,因為等号的右邊是一個short類型的s和int類型(整數的預設類型是int)的1相運算,我們上節課提到過,byte,short,char不能直接運算,需要轉換成int才能運算,是以,等号右邊的結果實際上是int類型的,把一個int類型的變量指派給一個short類型的s是會有問題的。
s+=1;這句代碼是沒有問題的,因為我們說過+=運算符中包含了一個強制類型轉換,是以也就相當于:
s= (short)(s+1);
ok,本篇文章我們先介紹着兩種運算符,剩下的運算符我們在後續的文章中繼續講解