一篇文章讓你弄懂Java運算符
1. 運算符是什么?
1.1 定義:
- 對常量和變量進(jìn)行運算操作的符號
- 程序?qū)?shù)據(jù)進(jìn)行運算時要用運算符
1.2 常見運算符的概述

1.3 表達(dá)式
1.3.1 定義
用運算符把常量或變量連接起來的式子
1.3.2 表達(dá)式的類型
表達(dá)式的類型為表達(dá)式運算結(jié)果的數(shù)據(jù)類型
2. 算數(shù)運算符
2.1 分類:

2.2 基本四則運算符:加減乘除模(+ - * / %)
注意事項:
/ :除法運算符,得到兩個數(shù)據(jù)相除的商。
特點:Java中整數(shù)除以整數(shù)結(jié)果還是整數(shù)。
%:取模(取余)運算,得到兩個數(shù)據(jù)相除的余數(shù)。
特點:可以用來判斷兩個數(shù)是否能夠整除。
應(yīng)用:
public class ArithmeticOperators {
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);
}
}運行結(jié)果如下:

在Java中,小數(shù)也可以進(jìn)行取模操作
public class ArithmeticOperators {
public static void main(String[] args) {
System.out.println(10%3);
System.out.println(12.5%2);
System.out.println(12.5%2.0);
}
}
易錯點1:除數(shù)不能為0
public class ArithmeticOperators {
public static void main(String[] args) {
int a = 10;
int b = 0;
System.out.println(a/b);
}
}會報錯! Java里面,把程序在編譯/運行的過程當(dāng)中 產(chǎn)?的不正常的?為 叫做異常,圖片里面的就是算術(shù)異常

易錯點2:在java中,負(fù)數(shù)也是可以參與取模運算的
public class ArithmeticOperators {
public static void main(String[] args) {
System.out.println(10%3);//1
System.out.println(10%-3);//1
System.out.println(-10%3);//-1
System.out.println(-10%-3);//-1
}
}具體計算步驟(小學(xué)計算也很容易出錯熬):

2.3 增量運算符(+= -= *= %=…)
該種類型運算符操作完成后,會將操縱的結(jié)果賦值給左操作數(shù)。
public class IncOpr {
public static void main(String[] args) {
int a = 1;
a += 2;
System.out.println(a);
a -= 1;
System.out.println(a);
a *= 3;
System.out.println(a);
a /= 3;
System.out.println(a);
a %= 3;
System.out.println(a);
}
}

增量運算符會自動幫我們進(jìn)行數(shù)據(jù)轉(zhuǎn)換
public class IncOpr {
public static void main(String[] args) {
int a = 99;
short s = 0;
//s = s + a;//err:報錯,short+int->int+int=>int,用short裝不下,需要強轉(zhuǎn)
//正確寫法1:
//s = (short)(s + a);
//正確寫法2:
s += a;//+=會自動幫我們進(jìn)行類型轉(zhuǎn)換
System.out.println(a);//99
}
}

2.4 自增/自減運算符(++,–)
++:自增1
– :自減1
- 單獨使用:放在變量前或后結(jié)果一樣
- 參與運算:
- 在變量前,先自增(自減) ,再進(jìn)行其它運算
- 在變量后,先以原值進(jìn)行其它運算,再自增(自減)
舉個栗子:
public class IncrementdecrementOpr {
public static void main(String[] args) {
int a = 10;
int b = ++a;//a=a+1;b=a;->b=11 a=11
int c = a++;//b=a;a=a+1;->b=10 a=11;
System.out.println(b);
}
}3. 關(guān)系運算符
常見關(guān)系運算符

關(guān)系運算符的運算結(jié)果都是布爾(boolean)類型,要么是true,要么是false
public class RelationalOpr {
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);
}
}
結(jié)果如下:

注意:當(dāng)需要多次判斷時,不能連著寫,比如:3<a<5 ,程序與數(shù)學(xué)中是有區(qū)別的
4. 邏輯運算符
定義:用于判斷“并且”、“或者”、“除非”等邏輯關(guān)系。邏輯運算符兩端一般連接值為布爾類型的關(guān)系表達(dá)式
4.1 &&:邏輯與,并且
也稱短路與
布爾表達(dá)式1 && 布爾表達(dá)式2:兩個表達(dá)式都為真的時候,整個表達(dá)式才是真
- 只要有?個是假,那整個表達(dá)式就是假
- 第?個表達(dá)式為假,后?不執(zhí)?
舉個栗子:
public class LogOperators {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a == 1 && b == 2);
System.out.println(a == 1 && b > 100);
System.out.println(a > 100 && b == 2);
System.out.println(a > 100 && b > 100);
}
}

4.2 ||:邏輯或,或者
布爾表達(dá)式1 || 布爾表達(dá)式2:只要有?個是真,整個表達(dá)式就是真
- 布爾表達(dá)式1為真,不執(zhí)?布爾表達(dá)式2
- 布爾表達(dá)式1為假,會繼續(xù)布爾表達(dá)式2
舉個栗子:
public class LogOperators {
public static void main(String[] args) {
int a = 1;
int b = 2;
System.out.println(a == 1 || b == 2);
System.out.println(a == 1 || b > 100);
System.out.println(a > 100 || b == 2);
System.out.println(a > 100 || b > 100);
}
}
4.3 !:邏輯非,表示否定
語法規(guī)則:!表達(dá)式
真變假,假變真。
舉個栗子:
public class LogOperators {
public static void main(String[] args) {
int a = 1;
System.out.println(!(a==1));
System.out.println(!(a!=1));
}
}
4.4 短路求值
&&和||遵循短路求值的規(guī)則
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false System.out.println(10 < 20 || 10 / 0 == 0); // 打印 true
我們都知道,計算10 / 0會導(dǎo)致程序拋出異常.但是上面的代碼卻能正常運行,說明10 / 0并沒有真正被求值.
&和|如果表達(dá)式結(jié)果為boolean時,也表示邏輯運算.但與&& ||相比,它們不支持短路求值.
System.out.println(10 > 20 & 10 / 0 == 0); // 程序拋出異常 System.out.println(10 < 20 | 10 / 0 == 0); // 程序拋出異常
5. 位操作符
如果位操作符,左右兩邊不是布爾表達(dá)式,那么他就代表位運算,且位運算操作的是二進(jìn)制位
5.1 按位與&
對應(yīng)位上有0就是0,對應(yīng)位都是1的時候,這?位運算下來的結(jié)果就是1

5.2 按位或|
對應(yīng)位上有1,就是1

5.3 按位異或
不?樣的位上進(jìn)?或,?樣的位上是0
推論:哪?位上是1,那么這?位置上就不同

5.4 按位取反~
0變1,1變0

int a = 0x0000000f;
System.out.printf("%x\n", ~a);//fffffff0
?六進(jìn)制:1 2 3 4 5 6 7 8 9 A B C D E F
0000 0000 0000 0000 0000 0000 0000 1111
1111 1111 1111 1111 1111 1111 1111 0000 ~
f f f f f f f 0
6. 移位運算
移動的是二進(jìn)制位
6.1 左移<<
最左側(cè)位不要了,最右側(cè)補0
用法舉例:
public class shftOperation {
public static void main(String[] args) {
int a = 0x10;
System.out.printf("%x\n",a << 1);
}
}
6.2 右移>>
最右側(cè)位不要了,最左側(cè)補符號位(正數(shù)補0,負(fù)數(shù)補1)
用法舉例:
public class shftOperation {
public static void main(String[] args) {
int a = 0x10;
System.out.printf("%x\n",a >> 1);
}
}
注意:沒有?符號數(shù)左移,因為第?位是符號位,移的話把符號位移?了
6.3 無符號右移>>>
最右側(cè)位不要了,最左側(cè)補0
用法舉例:
public class shftOperation {
public static void main(String[] args) {
int a = 0xffffffff;
System.out.printf("%x\n",a >>> 1);//7fffffff
}
}7. 條件運算符
語法格式:表達(dá)式1?表達(dá)式2:表達(dá)式3
如果表達(dá)式1為真,執(zhí)?表達(dá)式2,否則執(zhí)?表達(dá)式3
要么返回表達(dá)式2的結(jié)果,要么返回表達(dá)式3的結(jié)果,所以需要變量來接收
注意:表達(dá)式1必須是一個布爾表達(dá)式
用法舉例:
public class CondOpr {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = a>b?a:b;
System.out.println(c);//20
}
}8.運算符的優(yōu)先級
就一句話:不確定的話,就加括號!
在Java中,對于運算符的優(yōu)先級考察不多,不像C語言那樣。
到此,對于Java中運算符的講解已經(jīng)完畢。
運算符之間是有優(yōu)先級的. 具體的規(guī)則我們不必記憶. 在可能存在歧義的代碼中加上括號即可
public class Swap {
? ? public static void main(String[] args) {
? ? ? ? System.out.println(3*4+1);
? ? ? ? System.out.println(3*(4+1));
? ? }
}到此這篇關(guān)于Java運算符的文章就介紹到這了,更多相關(guān)Java運算符內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java 語言實現(xiàn)清除帶 html 標(biāo)簽的內(nèi)容方法
下面小編就為大家?guī)硪黄狫ava 語言實現(xiàn)清除帶 html 標(biāo)簽的內(nèi)容方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
intellij idea 啟動tomcat 1099端口被占用的解決
這篇文章主要介紹了intellij idea 啟動tomcat 1099端口被占用的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09
spring boot+ redis 接口訪問頻率限制的實現(xiàn)
這篇文章主要介紹了spring boot+ redis 接口訪問頻率限制的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Spring mvc服務(wù)端數(shù)據(jù)校驗實現(xiàn)流程詳解
這篇文章主要介紹了Spring mvc服務(wù)端數(shù)據(jù)校驗實現(xiàn)流程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09

