文章目錄
- Java基礎語法(三)——運算子
- 一、算術運算子
- 1.基本四則運算子
- (1)練習
- (2)注意事項
- 2.復合運算子
- 3.自增自減運算子
- 二、關系運算子
- 三、邏輯運算子
- 1.邏輯與&&
- 2.邏輯或 ||
- 3.邏輯非!
- 4.短路求值
- 四、位運算子
- 1.按位與&
- 2.按位或 |
- 3.按位異或 ^
- 4.按位取反 ~
- 五、移位運算子
- 1.左移運算子<<
- 2.右移運算子 >>
- 3.無符號右移 >>>
- 4.總結
- 五、條件運算子
- 六、關鍵字
- 完!
接上篇博客 Java基礎語法(二)——資料型別
Java基礎語法(三)——運算子
本次內容介紹大綱

一、算術運算子
1.基本四則運算子
| 符號 | 作用 | 說明 |
|---|---|---|
| + | 加 | 兩數相加 |
| - | 減 | 兩數相減 |
| * | 乘 | 兩數相乘 |
| / | 除 | 兩數相除 |
| % | 取余 | 得到的是兩數相除后的余數 |
四則規則較為簡單.
我們通過下面一組代碼來熟悉 四則運算子的操作.
(1)練習
代碼一:
public static void main(String[] args) {
System.out.println(5/2);
System.out.println(5+2);
System.out.println(5-2);
System.out.println(5*2);
}
我們根據運算的規則得出編譯的結果為 2 ,7 ,3 ,10
編譯結果:

代碼二:
public static void main(String[] args) {
System.out.println(5/2);
System.out.println((float)5/2);
System.out.println(5/(float)2);
System.out.println((float)(5/2));
}
編譯結果

??第一次列印的是 5/2,兩個int 型別相除,得到的還是 int 型別的,所以得到的結果為 2.
??第二次列印的是(float)5/2,將int 型別的5強制型別轉換為 5.0,所以得到了2.5的結果.
??第三次列印同二.
??第四次列印先5/2,得到結果2,再將整形2 轉換為 浮點型 2.0.
代碼三: 負數的取模
public static void main(String[] args) {
System.out.println(10%3);
System.out.println(10%-3);
System.out.println(-10%3);
System.out.println(-10%-3);
}
這是帶有負數的取模運算,那么編譯的結果是什么呢?
編譯結果:

10 / 3 = 3…1.
10 / -3 = -3…1.
-10 / 3 = -3…-1.
-10 / -3 = 3…-1 .
所以余數就為 1、 1、 -1、 -1.
(2)注意事項
(1)注意: 0不能做除數
代碼如下:

編譯結果:

??當0作為 除數時 ,編譯程序會報錯,顯示為算術例外,0不能作為除數.
(2)%表示取余,不僅僅可以對 int 求模,也能對 double 求模
代碼:
public static void main(String[] args) {
System.out.println(11.5%2.0);
}
編譯結果:

??而在c語言中不能對小數進行取余操作,在Java中可以對小數取余
2.復合運算子
| 符號 | 例子 |
|---|---|
| += | a+=2---->a=a+2 |
| -= | a-=2----> a= a-2 |
| *= | a =2–> a=a2 |
| /= | a/=2---->a=a/2 |
| %= | a%=2---->a=a%2 |
代碼如下:
public static void main(String[] args) {
int a = 10;
a += 2;// a = a+2
System.out.println(a);
short b=6;
b +=2;// b= b+2
System.out.println(b);
}
編譯結果如下:

我們知道,a+=2,相當于 a = a+2, b+=2,相當于 b = b+2.
當我們用 b = b+2,來代替 b+=2.

改正后的代碼:

所以我們得出了一個結論:
復合運算子: += -= *= /= 都會幫我們進行一次強制型別轉換.
3.自增自減運算子
| 符號 | 作用 |
|---|---|
| ++ | 前置++:先++后賦值、后置++:先賦值后++ |
| - - | 前置–:先–后賦值、后置–:先賦值后– |
代碼一:
public static void main(String[] args) {
int a=10;
a++;
System.out.println(a);
int b=10;
++b;
System.out.println(b);
}
編譯結果:

得出結論:

代碼二:
public static void main(String[] args) {
int a=10;
int b=++a;
System.out.println(b);
int c=10;
int d=c++;
System.out.println(d);
}
編譯結果:

得出結論:

二、關系運算子
關系運算子主要有六個:
| 符號 | 作用 |
|---|---|
| == | 判斷運算式相等,區別于"="賦值 |
| != | 判斷兩個運算式是否不相等 |
| < | 判斷第一個運算式是否小于第二個運算式 |
| > | 判斷第一個運算式是否大于第二個運算式 |
| <= | 判斷第一個運算式是否小于等于第二個運算式 |
| >= | 判斷第一個運算式是否大于等于第二個運算式 |
練習
代碼如下:
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a==b);
System.out.println(a!=b);
System.out.println(a<b);
System.out.println(a>b);
System.out.println(a<=b);
System.out.println(a>=b);
}
編譯結果:

根據上述代碼編譯的實作,我們的得知 關系運算子的使用規則:

三、邏輯運算子
| 符號 | 名稱 |
|---|---|
| && | 邏輯與 |
| || | 邏輯或 |
| ! | 邏輯非 |
1.邏輯與&&
代碼:
public static void main(String[] args) {
int a=10;
int b=20;
int c=30;
System.out.println(a<b && b<c);
}
編譯結果:

根據上述代碼編譯的實作,我們的得知 && 的使用規則:

2.邏輯或 ||
代碼如下:
public static void main(String[] args) {
int a=10;
int b=20;
int c=30;
System.out.println(a<b || b<c);
}
編譯結果:

根據上述代碼編譯的實作,我們的得知 || 的使用規則:

3.邏輯非!
代碼:
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(!(a>b));
}
編譯結果:

根據上述代碼編譯的實作,我們的得知 !的使用規則:

4.短路求值
&& 和 || 遵守短路求值的規則由代碼來舉例:

我們知道 0不可以作為除數出現,否則編輯器會進行報錯處理,
我們來看編譯結果:

正常運行,沒有報錯,這是為什么呢?
得出的結論:

四、位運算子
| 符號 | 名稱 | 使用 |
|---|---|---|
| & | 按位與 | 兩個二進制位都為1,對應位為1 |
| | | 按位或 | 兩個二進制位都為0,對應位為0 |
| ~ | 按位非 | 二進制中0變為1,1變為0 |
| ^ | 按位異或 | 二進制相同為0,二進制相異為1 |
1.按位與&
具體使用

代碼如下:
public static void main(String[] args) {
int a=13;
int b=5;
System.out.println(a&b);
}
編譯結果如下:

2.按位或 |
具體使用:運算方式類似于按位與&
??使用規則:如果兩個二進制位都是0,則結果為0,否則結果為1.
注意:
??當 & 和 | 的運算元為整數(int, short, long, byte) 的時候, 表示按位運算, 當運算元為 boolean 的時候, 表示邏輯運算
3.按位異或 ^
??使用規則: 如果兩個數字的二進制位相同, 則結果為 0, 相異則結果為 1.
4.按位取反 ~
??使用規則:如果該位為 0 則轉為 1, 如果該位為 1 則轉為 0
五、移位運算子
| 符號 | 名稱 | 使用 |
|---|---|---|
| << | 左移運算子 | 最左側位不要了,最右側補0 |
| >> | 右移運算子 | 最右側位不要了,最左側補符號位 |
| >>> | 無符號右移運算子 | 最右側位不要了,最左側補0 |
1.左移運算子<<
使用:

public static void main(String[] args) {
int a = 10;
System.out.println( a << 1);
}
編譯結果:

原來的二進制對應的是10
左移后得到的是 20
所以我們最后可以得到結論:

2.右移運算子 >>
使用

代碼展示:
public static void main(String[] args) {
int a = 10;
System.out.println( a >> 1);
}
編譯結果:

原來二進制數字對應的數字是10
向右移動1位 對應的數字是 5
所以我們得到結論:

3.無符號右移 >>>
??與右移運算子類似,但不同的是右移運算子最右側位舍去,左側補上符號位(正數補0,負數補1)
??但是>>> 無符號右移的使用規則是 ,最右側位舍去,左側只補0.
4.總結

五、條件運算子
條件運算子(三目運算子)表達形式
??運算式1 ? 運算式2 : 運算式3
??當 運算式1 的值為 true 時, 整個運算式的值為 運算式2 的值; 當 運算式1 的值為 false 時, 整個運算式的值為 運算式3 的值.
??也是 Java 中唯一的一個 三目運算子, 是條件判斷陳述句的簡化寫法.
代碼中的使用:
public static void main(String[] args) {
int a=10;
int b=20;
System.out.println(a>b?a:b);
}
編譯結果:

六、關鍵字
??這里我們先只做簡單了解即可,后期我們會詳細學到,

??好了,今天Java基礎語法運算子的知識就分享到這里,希望大家能夠多多練習,鞏固知識,謝謝大家的關注與欣賞!!!
謝謝欣賞!!!
完!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/272231.html
標籤:java
下一篇:Java-靜態代理與動態代理詳解
