首先來解釋一下什么叫做運算子
對變數或常量進行操作的符號叫做運算子
組合起來即是運算式
文章目錄
- 算術運算子
- 增量賦值運算子
- 自增/自減運算子
- 關系運算子
- 邏輯運算子
- 位運算子
- 移位運算子(了解即可)
- 三目運算子
- 優先級
- 注釋
算術運算子
即最基本的 + - * / %
這些使用都比較簡單,但要注意 / 和 % 的運用
System.out.println(3/2);
不是1.5,而是1,因為int/int得到的應該還是int
System.out.println((float)3/2); 1.5
System.out.println(3/(float)2); 1.5
只要有一個是浮點數答案就是浮點數
System.out.println((float)(3/2)); 1.0
這是先算完得到1再轉換為1.0
注意:除數不能為0,借著這個錯誤,我們來簡單看看Java對出錯時的描述,如果對例外感興趣,我會在后面出一期關于例外的博客,

System.out.println(10%3); 1
10-3*3=1
System.out.println(10%-3); 1
10-(-3)*(-3)=1
System.out.println(-10%3); -1
-10-(-3)*3=-1
System.out.println(-10%-3); -1
-10-(-3)*3=-1
從以上式子可以看出余數符號只與前面的數的符號有關
System.out.println(12.5/3); 0.5
C語言中不能進行小數取余,但java可以
增量賦值運算子
即 += -= *= /= %=
int a=2;
a+=1等同于a=a+1
但是java中增量賦值運算子可以做到自動強制型別轉換
例 short b=1;
b=b+2;//這樣寫肯定會報警告,b+2后會整形提升,型別不匹配
b+=a;//這樣寫就自動完成了強轉
+= -= *= /= %=被稱為復合運算子,它們都可以幫我們進行一次強制型別轉換
自增/自減運算子
即 ++ 、- -
前置++ 先++后使用
后置++ 后++先使用 --同理
int a=1;
int b=a++;
b=1,a=2
int a=1;
int b=++a;
b=2,a=2
a++;或++a;
這時候就是a+1,沒有區別
關系運算子
共有六個關系運算子:== 、 >= 、 <= 、 > 、 < 、 !=
int a=1,b=2;
System.out.println(a>b); false
System.out.println(a<b); true
System.out.println(a>=b); false
System.out.println(a<=b); true
System.out.println(a!=b); true
System.out.println(a==b); false
這些括號中的運算式均為布爾運算式,即結果要么是true,要么是false
邏輯運算子
&&叫做邏輯與(或短路與),||叫做邏輯或(或短路或),!叫邏輯非
布爾運算式1 && 布爾運算式2
只要有一個運算式為false,整個運算式就為false
如果運算式1為假,就不再執行運算式2
例 System.out.println(1>2 && 1/0);
上面已經說過0做除數會報錯,那現在會報錯嗎?
不會,因為1>2為假,那就不會再進行1/0這個運算式了,螢屏上列印的僅有false
布爾運算式1 || 布爾運算式2 (C語言中運算式可以是其他型別)
只要有一個運算式為true,整個運算式就為true
如果運算式1為真,就不再執行運算式2
例 System.out.println(1<2 && 1/0);
這個結果呢?
跟上面一樣因為1<2為真,那就不會再進行1/0這個運算式了,螢屏上列印的僅有true
!仍然是與布爾運算式相結合
!true == false
!false == true
C語言中運算式可以是其他型別,Java沒有所謂的0為假,非零為真
不建議使用&(與)和 |(或),因為它們左右兩邊都要執行,不支持短路求值
System.out.println(1>2 & 1/0);
System.out.println(1<2 | 1/0);
這兩個都會出現例外
位運算子
位運算子主要有四個:& | ^ ~
位操作表示按二進制位運算,計算機中都是使用二進制來表示資料的(01構成的序列),按位運算就是在按照二進制位的每一位依次進行計算
按位與&:
0000 1011
0000 0101
結果 0000 0001
對應位都是1才是1,其余均為0
按位或 |:
0000 1011
0000 0101
結果 0000 1111
對應位都是0才是0,其余均為1
按位異或 ^:
0000 1011
0000 0101
結果 0000 1110
對應位不同為1,相同為0
按位取反 ~:
0000 1011
結果 1111 0100
0變成1,1變成0
移位運算子(了解即可)
移位運算子有三個:<< 、>> 、>>>(對補碼使用)
左移運算子<< 相當于乘法,移n位,原數就乘2的n次方(右邊補0)
0000 0110 <<1 6 0000 0110 <<2 6
0000 1100 12 0001 1000 24
右移運算子>> 相當于除法,移n位,原數就除2的n次方(左邊補符號位)
0000 0110 >>1 6 0000 0110 >>2 6
0000 0011 3 0000 0001 1
注意:右移運算子對-1沒有用(-1的補碼為32個1,右移補得還是1,即還是-1)
無符號右移>>> 不管是不是負數,左邊都補0
-1>>>1 右移后左邊補0,成為非常大的正數(二進制為0后面31個1)
注意:沒有無符號左移運算子
由于計算機計算移位效率高于計算乘除,當某個代碼正好乘除2的n次方的時候可以用移位運算代替,
三目運算子
布爾運算式 ? 運算式1:運算式2
執行邏輯:如果布爾運算式為真,則執行運算式1;如果布爾運算式為假,則執行運算式2
int a=1;
int b=2;
int max=a>b?a:b;
可以嵌套使用
int c=3;
max=c>(a>b?a:b)?c:a>b?a:b;
優先級
運算子之間有優先級,具體無需記憶,只需在可能會產生歧義的地方加括號

注釋
- 檔案注釋
一般用在方法和類的前面
想設定這種每個class開頭自動出現的檔案注釋點這個教你設定 - 塊注釋
多行注釋
/*
hello
world
*/
- 行注釋
// int a=0;
注意:注釋內容應內容準確(代碼與注釋內容一致,及時更新注釋),長短適中(不能太短,不便于他人理解;不能太長,不便于后人維護),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/272485.html
標籤:其他
上一篇:難以置信!一篇文章就梳理清楚了 Python OpenCV 的知識體系
下一篇:分享三道 最簡單的藍橋杯試題
