運算符是一種特殊的符號,運算符是通過一定的運算規則操作一個或多個操作數,并生成結果的特定符號,運算符和操作數的有效組合稱為表達式。
java中運算符主要分為以下幾類:
賦值運算符用于給變量或者常量指定值,賦值運算符的符號是"="。
例
int a = 1; //定義時直接賦值int b;int c;b = c = 2; //可以在一個語句內為多個變量賦值int d = b + 3; //變量運算后再賦值,先執行右邊,再執行左邊
Java支持加減乘除和求余等基本數學運算。分別是以下幾種:
運算符 | 說 明 | |
一元 | - | 一元減,即取負 |
++ | 自增,如:++a等價于a = a + 1 | |
-- | 自減,如:--a等價于a = a – 1 | |
二元 | + | 加法,返回兩個操作數的和 |
- | 減法,返回兩個操作數的差 | |
* | 乘法,返回兩個操作數的積 | |
/ | 除法,返回兩個操作數的商 | |
% | 取模,返回兩個操作數整除后的余數 |
加法運算符:+
double a = 1.1;double b = 1.2;double sum = a + b;System.out.PRintln(sum); //輸出2.3
減法運算符:-
double a = 2.2;double b = 1.1;double sub = a - b;System.out.println(sub); //輸出1.1
乘法運算符:*
int a = 11;double b = 1.2;double multiply = a * b;System.out.println(multiply); //輸出1.32
除法運算符:/
除法運算符有點特殊:如果運算的兩個值都是int,得到的結果也是int類型,會把小數點直接去掉,也不會四舍五入
int a = 10;int b = 4;double c = a/b;System.out.println(c); //10初4本來結果是2.5,但是兩個int類型數相除結果是int類型數,盡管將結果值賦給了double,
//但輸出結果變成了2.0,相當于運算完成時將小數點給去了,再轉換為2.0double a2 = 5.2;double b2 = 3.1;double c2 = a2/b2;System.out.println(c2); //兩個double值運算,輸出結果:1.6774193548387097System.out.println(5 / 0.0); //除數為double型0.0,輸出負無窮大System.out.println(5 / 0); //除數為0,運行時會報錯
求余運算符:%
int a = 5;int b = 3;double c = 3.2;System.out.println(a%b); //輸出2System.out.println(a%c); //1.7999999999999998System.out.println(0%5); //輸出0System.out.println(5%0); //運行會出錯
求負:-
int i = -1;int i2 = -i;System.out.println(i2); //輸出1
自加:++
int i = 1;i++; //相當于將i的值加1;System.out.println(i); //輸出2
自加符號既可以放在變量前面,也可以放在變量后面,放在前面先把操作數加1,再進行表達式的運算,放在后面則相反。
int i1 = 1;int i2 = 1;int i3 = i1++; //此時i3的值為1,i1的值為2;它是先將i1的值賦給了i3,再將i1加1;int i4 = ++i2; //此時i4的值為2,i2的值也為2;它是先將i2的值加1,再將值賦給i4;
自減:--
作用類似于自加
int i1 = 1;int i2 = 1;int i3 = i1++; //此時i3的值為1,i1的值為0;它是先將i1的值賦給了i3,再將i1減1;int i4 = ++i2; //此時i4的值為0,i2的值也為0;它是先將i2的值減1,再將值賦給i4;
運算符 | 說 明 |
== | 等于,檢查兩個操作數是否相等 |
!= | 不等于,檢查兩個操作數是否不相等 |
> | 大于,檢查左操作數是否大于右操作數 |
>= | 大于等于,檢查左操作數是否大于或等于右操作數 |
< | 小于,檢查左操作數是否小于右操作數 |
<= | 小于等于,檢查左操作數是否小于或等于右操作數 |
System.out.println(4 == 4); //結果為trueSystem.out.println(4 != 3); //結果為trueSystem.out.println(true == false); //結果為false
邏輯運算符用于操作boolean類型的變量或常量
運算符 | 說 明 | |
Java | ||
一元 | ! | 邏輯非(NOT) |
二元 | & | 邏輯與(AND)(不短路) 左邊為false,依然會運算右邊
|
| | 邏輯或(OR) 如左操作數為true,依然運算右邊操作數 | |
&& | 短路與 如左操作數為false,則不運算右操作數 | |
|| | 短路或 如左操作數為true,則不運算右操作數 | |
^ | 異或 當兩個操作數不同時返回true,相同則返回false |
看例子
System.out.println(!true); //結果為falseSystem.out.println(2 > 1 && 1 > 1); //結果為falseSystem.out.println(2 > 1 || 1 > 1); //結果為trueSystem.out.println(true ^ false); //結果為true,異或,相當于把第一個前面一個值true取反,再進行“或”運算
下面我們來看一下 |于||的區別
int a = 1;int b = 1;if(a == 1 | b++ > 1){ System.out.println(b); //輸出b的值為2,按位或雖然|符號左邊結果為true,但依然會執行|符號右邊的代碼}
將|改為||
int a = 1;int b = 1;if(a == 1 || b++ > 1){ System.out.println(b); //輸出b的值為1,||符號左邊結果為true,不會再執行||符號右邊的代碼}
表達式1 ? 表達式2 : 表達式3
String s = 1 > 2 ? "1大于2" : "1不大于2";System.out.println(s); //輸出 1不大于2
位運算符既參加運算的兩個數據,按二進制位進行運算。Java的位運算符有如下7個:按位與(&)、按位或(|)、按位非(~)、按位異或(^)、左移運算符(<<)、右移運算符(>>)、無符號右移運算符(>>>)。
具體介紹可以參考下面這篇文章:
http://www.companysz.com/yezhenhan/archive/2012/06/20/2555849.html
優先級 | 運 算 符 |
1 | 括號: ()和[] |
2 | 一元運算符:-、++(前置)、--(前置)、! |
3 | 算術運算符:*、/、%、+和- |
4 | 關系運算符:>、>=、<、<=、==和!= |
5 | 邏輯運算符:&、|、&&和|| |
6 | 條件運算符:? : |
7 | 賦值運算符:=、*=、/=、%=、+=和-= |
盡管運算符有優先級,一個表達式中會根據表達式運算符的優先級進行先后運算,但是在實際編程中如果一個表達式很長也不會推薦這樣寫,而是分為幾步寫,因為寫在一起可讀性太差。
新聞熱點
疑難解答