作者:CHAITANYA SINGH
來源:https://www.koofun.com/pro/kfpostsdetail?kfpostsid=17
運算符是表示動作的字符,例如+是表示加法的算術運算符。
Java中的運算符類型有七大類:基本算術運算符妈嘹、賦值運算符、自增運算符和自減運算符暂筝、邏輯運算符兰绣、比較(關系)運算符击困、位運算符荒叼、三元運算符
1)基本算術運算符
基本算術運算符是:+轿偎, - ,*被廓,/,%萝玷,其中+用于加法嫁乘,-用于減法,*用于乘法球碉,/用于除法蜓斧,%用于計算兩個操作數(shù)相除后的余數(shù)。
注意:%運算符操作后返回余數(shù)睁冬,例如:10%5將返回0
算術運算符的例子
public class ArithmeticOperatorDemo?{
???public static void main(String?args[])?{
??????int num1?=?100;
??????int num2?=?20;
??????System.out.println("num1?+?num2:?"+?(num1?+?num2)?);
??????System.out.println("num1?-?num2:?"+?(num1?-?num2)?);
??????System.out.println("num1?*?num2:?"+?(num1?*?num2)?);?
??????System.out.println("num1?/?num2:?"+?(num1?/?num2)?);
??????System.out.println("num1?%?num2:?"+?(num1?%?num2)?);
???}
}
輸出:
num1?+?num2:?120
num1?-?num2:?80
num1?*?num2:?2000
num1?/?num2:?5
num1?%?num2:?0
2)賦值運算符
java中的賦值運算符是:=挎春,+=, -=豆拨,*=直奋,/=,%=
num2 = num1將變量num1的值賦給變量施禾。
num2 += num1等于num2 = num2 + num1
num2 -= num1等于num2 = num2 - num1
num2 *= num1等于num2 = num2 * num1
num2 /= num1等于num2 = num2 / num1
num2 %= num1等于num2 = num2 % num1
賦值運算符的示例
public class AssignmentOperatorDemo?{
???public static void main(String?args[])?{
??????int num1?=?10;
??????int num2?=?20;
??????num2?=?num1;
??????System.out.println("=?Output:?"+num2);
??????num2?+=?num1;
??????System.out.println("+=?Output:?"+num2);
??????num2?-=?num1;
??????System.out.println("-=?Output:?"+num2);
??????num2?*=?num1;
??????System.out.println("*=?Output:?"+num2);
??????num2?/=?num1;
??????System.out.println("/=?Output:?"+num2);
??????num2?%=?num1;
??????System.out.println("%=?Output:?"+num2);
???}
}
輸出
=?Output:?10
+=?Output:?20
-=?Output:?10
*=?Output:?100
/=?Output:?10
%=?Output:?0
3)自增和自減運算符
++和 --
num++ 相當于num = num+1;
num-- 相當于num = num-1;
自增和自減運算符的示例
public class AutoOperatorDemo?{
???public static void main(String?args[]){
??????int num1=100;
??????int num2=200;
??????num1++;
??????num2--;
??????System.out.println("num1++?is:?"+num1);
??????System.out.println("num2--?is:?"+num2);
???}
}
輸出
num1++?is:?101
num2--?is:?199
4)邏輯運算符
邏輯運算符與二進制變量一起使用脚线,它們主要用于條件語句和循環(huán)語句中的評估條件。
java中的邏輯運算符是:&&弥搞、|| 邮绿、!
假設我們有兩個布爾變量b1和b2。
如果b1和b2都為true攀例,則b1 && b2將返回true船逮,否則返回false。
如果b1和b2都為false粤铭,則b1 || b2將返回false挖胃,否則返回true。
!b1將返回b1的反面,這意味著如果b1為false則!b1返回true冠骄,如果b1為true則!b1返回false伪煤。
邏輯運算符的示例
public class LogicalOperatorDemo?{
???public static void main(String?args[])?{
??????boolean b1?=?true;
??????boolean b2?=?false;
??????System.out.println("b1?&&?b2:?"+?(b1&&b2));
??????System.out.println("b1?||?b2:?"+?(b1||b2));
??????System.out.println("!(b1?&&?b2):?"+?!(b1&&b2));
???}
}
輸出:
b1?&&?b2:?false
b1?||?b2:?true
!(b1?&&?b2):?true
5)比較(關系)運算符
我們在Java中有六個關系運算符:==,!=凛辣,>抱既,<,>=扁誓,<=
如果左側和右側都相等防泵,則==返回true
!=如果左側不等于運算符的右側,則返回true蝗敢。
>如果左側大于右側捷泞,則返回true。
<如果左側小于右側寿谴,則返回true锁右。
如果左側大于或等于右側,則==返回true讶泰。
如果左側小于或等于右側咏瑟,則<=返回true。
關系運算符的示例
注意:這個例子使用的if-else語句是我們下一個教程要講解的內容痪署,如果你發(fā)現(xiàn)它很難理解码泞,那么請先跳過去,等讀完了下一個教程后再返回來看這個例子狼犯。
public class RelationalOperatorDemo?{
???public static void main(String?args[])?{
??????int num1?=?10;
??????int num2?=?50;
??????if(num1==num2)?{
?????????System.out.println("num1?and?num2?are?equal");
??????}
??????else{
?????????System.out.println("num1?and?num2?are?not?equal");
??????}
??????if(?num1?!=?num2?){
?????????System.out.println("num1?and?num2?are?not?equal");
??????}
??????else{
?????????System.out.println("num1?and?num2?are?equal");
??????}
??????if(?num1?>?num2?){
?????????System.out.println("num1?is?greater?than?num2");
??????}
??????else{
?????????System.out.println("num1?is?not?greater?than?num2");
??????}
??????if(?num1?>=?num2?){
?????????System.out.println("num1?is?greater?than?or?equal?to?num2");
??????}
??????else{
?????????System.out.println("num1?is?less?than?num2");
??????}
??????if(?num1?<?num2?){
?????????System.out.println("num1?is?less?than?num2");
??????}
??????else{
?????????System.out.println("num1?is?not?less?than?num2");
??????}
??????if(?num1?<=?num2){
?????????System.out.println("num1?is?less?than?or?equal?to?num2");
??????}
??????else{
?????????System.out.println("num1?is?greater?than?num2");
??????}
???}
}
輸出:
num1?and?num2?are?not?equal
num1?and?num2?are?not?equal
num1?is?not?greater?than?num2
num1?is?less?than?num2
num1?is?less?than?num2
num1?is?less?than?or?equal?to?num2
6)按位運算符
有六個按位運算符:&余寥,|,^悯森,?宋舷,<<,>>
num1?=?11;?/*?等于00001011?*/?
num2?=?22;?/*?等于00010110?*/
按位運算符執(zhí)行逐位處理呐馆。
num1和num2比較num1和num2的相應位肥缔,如果兩個位相等則生成1,否則返回0汹来。在我們的例子中它將返回:2续膳,這是00000010,因為在num1和num2的二進制形式中只有第二個最后的位匹配收班。
num1 | num2比較num1和num2的相應位坟岔,如果任一位為1,則生成1摔桦,否則返回0社付。在我們的例子中承疲,它將返回31,即00011111
num1 ^ num2比較num1和num2的相應位鸥咖,如果它們不相等則生成1燕鸽,否則返回0。在我們的例子中它將返回29啼辣,相當于00011101
~num1是一個補碼運算符啊研,它只是將位從0更改為1,將1更改為0鸥拧。在我們的示例中党远,它將返回-12摘能,其中8位等效于11110100
num1 << 2是左移位運算符焚辅,向左移動位应闯,丟棄最左邊的位铣猩,并將最右邊的位賦值為0,在我們的例子中輸出為44饶氏,相當于00101100
注意:在下面的示例中嘹狞,我們在此移位運算符的右側提供2赂蠢,這是位向左移動兩個位置的原因媳握。我們可以更改此數(shù)字碱屁,并且位將按運算符右側指定的位數(shù)移動。同樣適用于右側操作員蛾找。
num1 >> 2是右移位運算符,將位向右移動赵誓,丟棄最右位打毛,并將最左位的值賦值為0。在我們的例子中輸出為2俩功,相當于00000010
按位運算符的示例
public class BitwiseOperatorDemo?{
??public static void main(String?args[])?{
?????int num1?=?11;??/*?11?=?00001011?*/
?????int?num2?=?22;??/*?22?=?00010110?*/
?????int result?=?0;
?????result?=?num1?&?num2;???
?????System.out.println("num1?&?num2:?"+result);
?????result?=?num1?|?num2;???
?????System.out.println("num1?|?num2:?"+result);
?????result?=?num1?^?num2;???
?????System.out.println("num1?^?num2:?"+result);
?????result?=?~num1;???
?????System.out.println("~num1:?"+result);
?????result?=?num1?<<?2;???
?????System.out.println("num1?<<?2:?"+result);?result?=?num1?>>?2;???
?????System.out.println("num1?>>?2:?"+result);
??}
}
輸出:
num1?&?num2:?2
num1?|?num2:?31
num1?^?num2:?29
~num1:?-12
num1?<<?2:?44num1?>>?2:?2
7)三元運算符
此運算符計算布爾表達式并根據(jù)結果分配值幻枉。
句法:
1variable?num1?=?(expression)???value?iftrue:?value?iffalse;
如果表達式結果為true,則將冒號( : )之前的第一個值賦值給變量num1诡蜓,否則將第二個值賦值給變量num1熬甫。
三元運算符的例子
public class TernaryOperatorDemo?{
???public static void main(String?args[])?{
?????int num1,?num2;
?????num1?=?25;
?????/*?num1?is?not?equal?to?10?that's?why
??????*?the?second?value?after?colon?is?assigned
??????*?to?the?variable?num2
??????*/
?????num2?=?(num1?==?10)???100?:?200;
?????System.out.println(?"num2:?"+num2);
?????/*?num1?is?equal?to?25?that's?why
??????*?the?first?value?is?assigned
??????*?to?the?variable?num2
??????*/
?????num2?=?(num1?==?25)???100:?200;
?????System.out.println(?"num2:?"+num2);
???}
}
輸出
num2:?200
num2:?100
Java中的運算符優(yōu)先級
如果表達式具有多個運算符,則確定首先需要對哪個運算符求值蔓罚。操作符在頂部具有較高優(yōu)先級椿肩,在底部具有較低優(yōu)先級。
一元運算符:++???--???!???~
乘除法:????*???/???%
加減法:????+????-
移位:??????<<???>>
關系:??????>???>=???=???<=
平等:??????==???!=
按位AND?:??&
按位XOR?:??^
按位OR?:???|
邏輯AND?:??&&
邏輯OR?:???||
三元:???????:
賦值:??????=???+=???-=???*=???/=???%=???>>???=<???<=???&=???^=???|=