天天看點

2.3 java中的運算符(一)

上篇文章我們剛剛研究了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,本篇文章我們先介紹着兩種運算符,剩下的運算符我們在後續的文章中繼續講解