Java從入門到成神【03】運算符

1.算術運算符:

算數運算符有:+(加),-(減),*(乘),/(除),%(取餘),++(自增),--(自減)。

其中,加減乘除的作用和數學中的加減乘除作用一樣,所以不再贅述了。

%取餘,就是做除法得到餘數,例:

int a = 7%2;
System.out.println(a);//結果爲1(商3餘1)
int b = 8%4;
System.out.println(b);//結果爲0(商2餘0)

++自增,即在原來的基礎上加1;--自減,即在原來的基礎上減1。例:

int c = 1;
c++;
System.out.println(c);//結果爲2,c++即在c爲1的基礎上加1

int d = 3;
d--;
System.out.println(d);//結果爲2,d--即在d爲3的基礎上減1

++自增,--自減分別有兩種情況,下面以自增爲例進行說明,自減同理。

/*
*第一種情況:++符號在變量的前面,如++a
*第二種情況:++符號在變量的後面,如b++
*/

//第一種情況++a
int a = 2;
++a;//即 a = a+1;
System.out.println(a);//結果爲3,一條語句中,變量自增單獨使用時,即爲加1

int b = 2;
int c = ++b;//這條語句中有自增操作和賦值操作
System.out.println(b);//結果爲3
System.out.println(c);//結果爲3,一條語句中,有多項操作時,++符號在變量前面,則先執行自增操作
                      //int c = ++b;這句可以理解爲拆成以下兩句:
                      //b = b+1;自增先執行
                      //int c = b;後賦值
//第二種情況d++
int d = 2;
int e = d++;//這條語句中有自增操作和賦值操作
System.out.println(d);//結果爲3
System.out.println(e);//結果爲2,一條語句中,有多項操作時,++符號在變量後面面,則後執行自增操作
                      //int e = d++;這句可以理解爲拆成以下兩句:
                      //int e = d;先賦值
                      //d = d+1;自增後執行

自減的兩種情況--a和a--同自增。

2.關係運算符:

關係運算符有:>(大於),<(小於),>=(大於等於),<=(小於等於),==(相等),!=(不等)。 關係運算符的運算結果爲boolean型,即結果不是true(對)就是false(錯)。

其中>(大於),<(小於),>=(大於等於),<=(小於等於)與數學中的關係判斷相同,不做贅述。

==(相等)用於判斷兩個基本數據類型(注意是基本數據類型!!!引用數據類型判斷值是否相等不能用==)的值是否相等,例:

int f = 5;
int g = 5;
int h = 7;
boolean fg = (f == g);
boolean gh = (g == h);
System.out.println(fg);//結果爲true
System.out.println(gh);//結果爲false

!=(不等)用於判斷兩個基本數據類型(注意是基本數據類型!!!)的值是否不相等,例:

int i = 5;
int j = 5;
int k = 7;
boolean ij = (i != j);
boolean jk = (j != k);
System.out.println(ij);//結果爲false
System.out.println(jk);//結果爲true

3.邏輯運算符:

邏輯運算符有:&&(與,短路與),||(或,短路或),!(非),&(與),|(或)。邏輯判斷的結果也是boolean型。
1) &&,與即爲並且的意思,多個條件同時滿足的結果纔是true;只要有一個條件不滿足則結果爲false。例:

int n = 30;
boolean m = (n>20 && n<40);
System.out.println(m);//n等於30,同時滿足大於20(true)和小於40(true)兩個條件,所以結果爲true

int o = 50;
boolean p = (o>20 && o<40);
System.out.println(p);//o等於50,滿足大於20(true)的條件,但是不滿足小於40(false)的條件,所以結果爲false

所以,使用&&時,只要判斷條件中有一項不滿足(爲false),則最終結果爲false;只有所有判斷條件都滿足(爲true)時,最終結果才爲true。

2)||,或即爲或者的意思,只要有一個條件滿足,結果就是true;只有所有條件都不滿足時,結果才爲false。例:

int q = 20;
boolean r = (q>30 || q<40);
System.out.println(r);//q等於20,不滿足大於30(false)的條件,但是滿足小於40(true)的條件,所以最終結果爲true

int s = 40;
boolean t = (s==50 || s==60);
System.out.println(t);//s等於40,不滿足等於50(false)的條件,也不滿足等於60(false)的條件,所以最終結果爲false

所以,使用 || 時,只要判斷條件中有一項滿足(爲true),則最終結果爲true;只有所有判斷條件都不滿足(爲false)時,最終結果才爲false。

3)!,非即爲取反,由於邏輯運算符的結果只有兩種(true和false),所以取反的結果也只有兩種,例如true取反爲false,false取反爲true。

4)&,也是與,基本效果和&&一樣,但是&&具有短路特點,而&沒有短路特點。

5)|,也是或,基本效果和 || 一樣,但是 || 具有短路特點,而 | 沒有短路特點。

6)短路。&&也被稱爲短路與,||也被稱爲短路或。因爲它們都具備短路的特點。短路,就是具有多個判斷條件時,若根據前面的條件就能得到最終結果,則不再判斷後面的條件是否滿足。例:

int a = 3;
int b = 5;
int c = 9;
System.out.println(a<b && ++b<c);//a<b滿足條件,所以繼續判斷++b<c,判斷前執行++b,
                                 //所以下面輸出b的值爲6,此處沒有發生短路
System.out.println(b);//結果爲6

int d = 3;
int e = 5;
int f = 9;
System.out.println(d>e && ++e<f);//d>e不滿足條件,由此已經可以得到最終結果爲false,
                                 //所以不會再判斷++e<f,即此處發生了短路,
                                 //所以++e也沒有被執行,所以下面輸出e的值還是5
System.out.println(e);//結果爲5

4.賦值運算符:

賦值運算符有:=,+=,-=,*=,/=,%=。

1)=,一個等於號就是賦值,將=右邊的數據賦給坐變的變量。賦值在前面已經用到很多了,所以不再贅述。

2)+=,在原來的基礎上加上一個數,再賦值回去。例:

int a = 5;
a += 1;//等價於a = a+1
System.out.println(a);//結果爲6

3)-=,在原來的基礎上減去一個數,再賦值回去。例:

int a = 5;
a -= 1;//等價於a = a-1
System.out.println(a);//結果爲4

4)*=,在原來的基礎上乘以一個數,再賦值回去。例:

int a = 5;
a *= 2;//等價於a = a*2
System.out.println(a);//結果爲10

5)/=,以原來的數作爲被除數,除以一個數,把結果(商數)賦值回去。例:

int a = 6;
a /= 2;//等價於a = a/2
System.out.println(a);//結果爲3

6)%=,以原來的數作爲被除數,除以一個數,把結果(餘數)賦值回去。例:

int a = 5;
a %= 2;//等價於a = a%2
System.out.println(a);//結果爲1

5.字符串連接運算符:

字符串連接運算符還是加號(+),只不過用於字符串的連接時,效果與數字相加時不一樣。

字符串連接符會將int、long等數據類型和字符串連接成一個新的字符串。例:

System.out.println(""+123);//""是一個空字符串,123是int型數據,通過字符串連接符+連接後,輸出一個"123"字符串
System.out.println(1+2+3+"");//1,2,3都是int型數據,所以它們使用+相加做的是加法,得6,繼續+,後面是一個字符串"",所以又變成了字符串"6"
System.out.println(1+2+""+3);//1,2是int型數據,相加得3,繼續+"",變成了字符串"3",再+3,變成了字符串"33"
System.out.println(1+2+"abc"+3);//結果"3abc3"

總結:

1)+號的兩邊都是基本數據類型時,做的是算術運算的相加。如1+2的結果是3。

2)+號的兩邊如果一邊是基本數據類型,一邊是字符串,則將基本數據類型與字符串連接成一個新的字符串。如2+"as"的結果是"2as"。

3)+號的兩邊都是字符串的話,則將兩個字符串連接成一個新的字符串。如"ab"+"cd"的結果是"abcd"。

6.三目/條件運算符:

//格式:
boolean ? 語句1 : 語句2;

//例:
int a = 5;
int b = 7;
int c = (a>b) ? a : b;
//上面語句中,(a>b)就是格式中的boolean,a是格式中的語句1,b是格式中的語句2
//如果boolean爲真(true),則整個三目運算的結果爲語句1。即如果(a>b)爲true,就將a賦值給c
//如果boolean爲假(false),則整個三目運算的結果爲語句2。即如果(a>b)爲false,就將b賦值給c

 

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