Java運算符詳解
學習運算符之前,需要先搞清楚運算符和表達式的概念。
1. 運算符的概念
對變量或者常量進行操作的符號被稱之為運算符。
2. 表達式的概念
用運算符把常量或者變量連接起來符合java語法的式子就可以稱為表達式。不同運算符連接的式子體現的是不同類型的表達式。
3. 運算符的分類
3.1算術運算符
算術運算符包括以下幾種:
+:加法,包括以下三種情況,
數字相加。
字符相加,拿字符在計算機底層存儲的對應的數據值(字符在ASCII碼錶中對應的數字)來參與運算的。
字符串相加,是進行字符串的拼接,字符串的數據和其他類型的數據進行相加的結果是字符串類型的。
-:減法,整數類型或者小數類型的數據做減法。
*:乘法,整型或者小數類型的數據做乘法。
/:除法,得到的是兩個數相除的商。
%模,得到的是兩個數相除的餘數。
++,對變量的值做加1的處理。如果++是寫在變量的後面,是先拿變量原先的值參加運算,再對變量的值加1; 如果++是寫在變量的前面,先把原來變量的值加1,再用加1後的數據參加運算。
--,對變量的值做減1的處理,如果--是寫在變量的後面,是先拿變量原先的值參加運算,再對變量的值減1; 如果--是寫在變量的前面,先把原來變量的值減1,再用減1後的數據參加運算。
代碼示例:
public class OperatorDemo1 {
public static void main(String[] args) {
int a = 1;
int b = 2;
char c = 'c';
//加法,數字相加
System.out.println(a+b);
//加法,字符相加
System.out.println(a+c);
//加法,字符串和字符串相加,字符串和其他類型的數據相加
System.out.println("hello"+"everybody");
System.out.println("hello"+a);
//乘法
System.out.println(a*b);
//除法,求商
System.out.println(a/b);
//除法,求模
System.out.println(a%b);
//++定義在變量的前面
System.out.println(++a);
//++定義在變量的後面
System.out.println(a++);
//--定義在變量的前面
System.out.println(--b);
//--定義在變量的後面
System.out.println(b--);
}
}
3.2賦值運算符
基本的賦值運算符:=
擴展的賦值運算符:+=、-=、*=、/= 、%=
把左邊和右邊的結果賦值給左邊。
注意:左邊不能是常量。
隱含了一個強制類型轉換。.
代碼示例
public class OperatorDemo2 {
public static void main(String[] args) {
int a = 1;
short b = 2;
// +=
a += 10;
b +=20;//b +=20相當於b = (short)(b+20),隱含了一個強制的數據類型轉換。
System.out.println(a);
System.out.println(b);
// -=
System.out.println(a -= 1);
// *=
System.out.println(a *= 2);
// /=
System.out.println(a /= 2);
// %=
System.out.println(a %= 2);
}
}
3.3關係運算符
常見的關係比較運算符有:==,!=,>,=,<=。
關係運算符的結果都是boolean型,也就是要麼是true,要麼是false。
代碼示例:
public class OperatorDemo3 {
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);
}
}
3.4邏輯運算符
作用:邏輯運算符用於連接布爾型表達式,在Java中不可以寫成3
邏輯運算符的分類:
與:& 有false則false,無論左邊真假,右邊都參與運算。
或:| 有true則true,無論左邊真假,右邊都參與運算。
異或:^ 相同則false,不同則true
非:! true則false,false則true
雙與:&& 如果左邊為true,右邊參與運算;當左邊判斷為false時,整體為false,右邊不再參與運算。
雙或:|| 如果左邊為true,右邊不再參與運算,整體為true;如果左邊為false,判斷右邊是否為true。
綜上考慮,&&和||的執行效率更高,所以在實際開發中一般都用&&和||。
代碼示例:
public class OperatorDemo4 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
System.out.println((a>b) & (a>c));// false & false
System.out.println((ac)); // true & false
System.out.println("---------------");
System.out.println((a>b) | (a>c));// false | false
System.out.println((ac)); // true | false
System.out.println("---------------");
System.out.println((a>b) ^ (a>c));// false ^ false
System.out.println((ac)); // true ^ false
System.out.println("---------------");
System.out.println((a>b)); // false
System.out.println(!(a>b)); // !false
System.out.println(!!(a>b)); // !!false
System.out.println("---------------");
System.out.println((a>b) && (a>c));// false && false
System.out.println((ac)); // true && false
System.out.println("---------------");
System.out.println((a>b) || (a>c));// false || false
System.out.println((ac)); // true || false
}
}
3.5三元運算符
格式:
(關係表達式)?表達式1:表達式2;
如果條件為true,運算後的結果是表達式1;
如果條件為false,運算後的結果是表達式2;
代碼示例:
public class OperatorDemo5 {
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = (a>b) ? a : b;
System.out.println("c:" + c);
}
}
![Java運算符詳解](http://p2.ttnews.xyz/loading.gif)
閱讀更多 文瀧Vincent 的文章