運算符:對字面量或者變量進行操作的符號
表達式:用運算符把字面量或者變量連接起來符合java語法的式子就可以稱作表達式
? ? ? ? ? ? ? ? 不同運算符連接的表達式體現的是不同類型的表達式
int a = 10;
int b = 20;
int c = a + b;
? +:運算符,并且是算術運算符
? a+b:是表達式,由于+是算術運算符,所以表達式叫算術表達式
算術運算符
+ | 加 |
- | 減 |
*???????? | 乘 |
/ | 除 :整數相除,結果只能得到整數,要想得到帶有小數的結果,就需要有小數參與運算 |
% | 取余:作用是用來取余數的,如果操作數都是整數,結果是整數,操作數有一個是小數,結果都是小數 |
%有什么用?
?????????%目前能想到的場景,可以進行奇數偶數的判斷,任何一個數%2的結果,不是0就是1
public class ArithmeticOperator {public static void main(String[] args) {System.out.println(5/2); // 2 整數相除,結果只能得到整數System.out.println(5/2.0); //2.5 要想得到帶有小數的結果,就需要有小數參與運算System.out.println(5.0/2.0); //2.5 要想得到帶有小數的結果,就需要有小數參與運算System.out.println(5.0/2); //2.5 要想得到帶有小數的結果,就需要有小數參與運算System.out.println("_________________________________________");System.out.println(5%2); //1System.out.println(5%2.0); //1.0System.out.println(5.0%2.0); //1.0System.out.println(5.0%2); //1.0}
}
需求:鍵盤錄入一個三位數,將其拆分為個位,十位,百位,打印在后臺
個位的計算:數值%10123除以10(商12,余數為3) 十位的計算:數值/10%10123除以10(商12,余數為3,整數相除只能等于整數)12除以10(商1,余數為2) 百位的計算:數值/10/10%10123除以10(商12,余數為3,整數相除只能等于整數)12除以10(商1,余數為2)1除以10(商0,余數為1) 千位的計算:數值/10/10/10%10
import java.util.Scanner;
public class ArithmeticOperatorTest {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("請輸入一個三位數:");int num = sc.nextInt();int ge = num%10;int shi = num/10%10;int bai = num/10/10%10;System.out.println("個位數:" + ge);System.out.println("十位數:" + shi);System.out.println("百位數:" + bai);}
}
自增自減運算符
????????++ :讓變量自身的值+1
?????????-- :讓變量自身的值-1
????????只能操作變量
????????使用方式有兩種
1.單獨使用? 一句代碼中,只做++ 或者 --,單獨使用時,++ 或者 -- 在變量的前面還是后面沒有區別
2.參加運算
如果放在變量的前面,先對變量進行+1或者-1,再拿變量的值進行運算,當++ 或者--,在前面時,先運算再賦值
如果放在變量的后面,先拿變量的值進行運算,再對變量的值進行 +1或者-1,當++或者--,在后面是,先賦值在運算
public class AutodecrementOperator {public static void main(String[] args) {int x = 10;int y = x++; // y = 10;x=11int z = ++y;// y =11;z=11System.out.println("x的值:" + x);System.out.println("y的值: " + y);System.out.println("z的值:" + z);System.out.println("______________________________");int a = 3;// 4 4 5*10int b = (++a) + (a++) +(a*10);System.out.println("a的值" + a);//5System.out.println("b的值" + b);//58}
}
字符串的拼接
?????+ 當加號操作當中,遇到了字符串,這時+號就是字符串連接符,而不是算術運算符
賦值運算符
? ? ?
????????賦值運算符是編程中用于給變量賦值的操作符,主要包括以下幾種:
=
:基本賦值運算符
將右邊的值賦給左邊的變量
示例:a = 10;
表示將整數值10賦值給變量a+=
:加法賦值運算符
執行步驟:- 先計算左邊變量和右邊值的和
- 然后將結果賦給左邊的變量
等價于:a = a + b
示例:a += 5;
相當于a = a + 5;
-=
:減法賦值運算符
執行步驟:- 先計算左邊變量減去右邊值的差
- 然后將結果賦給左邊的變量
等價于:a = a - b
示例:balance -= withdrawal;
可用于銀行賬戶扣款場景
*=
:乘法賦值運算符
執行步驟:- 先計算左邊變量和右邊值的乘積
- 然后將結果賦給左邊的變量
等價于:a = a * b
示例:price *= 1.1;
可用于價格上調10%的計算
/=
:除法賦值運算符
執行步驟:- 先計算左邊變量除以右邊值的商
- 然后將結果賦給左邊的變量
等價于:a = a / b
示例:average /= count;
常用于計算平均值
%=
:取模賦值運算符
執行步驟:- 先計算左邊變量除以右邊值的余數
- 然后將結果賦給左邊的變量
等價于:a = a % b
示例:seconds %= 60;
可用于將總秒數轉換為分鐘和秒數
應用場景:
- 游戲開發中角色屬性的實時更新
- 金融計算中的累計利息計算
- 科學計算中的迭代運算
- 數據處理中的聚合統計
注意事項:
- 運算符左右兩邊需要有明確的值或變量
- 除法和取模運算時右邊值不能為0
- 復合賦值運算符比簡單賦值運算符執行效率更高
關系運算符
關系運算符是編程中用于比較兩個值的基本運算符,這些運算符的運算結果都是布爾類型(boolean),即只能返回true或false。以下是各種關系運算符的詳細說明:
相等運算符(==): 用于判斷兩個操作數的值是否相等。例如:
- 5 == 5 返回true
- 3 == 5 返回false
- "hello" == "hello" 返回true 注意:在比較字符串時,實際上是比較字符串的內容而非對象引用
不等運算符(!=): 用于判斷兩個操作數的值是否不相等。例如:
- 5 != 3 返回true
- 5 != 5 返回false
- "abc" != "def" 返回true
大于運算符(>): 用于判斷左操作數是否大于右操作數。例如:
- 10 > 5 返回true
- 5 > 10 返回false
- 5 > 5 返回false
大于等于運算符(>=): 用于判斷左操作數是否大于或等于右操作數。例如:
- 10 >= 5 返回true
- 5 >= 10 返回false
- 5 >= 5 返回true
小于運算符(<): 用于判斷左操作數是否小于右操作數。例如:
- 3 < 5 返回true
- 5 < 3 返回false
- 5 < 5 返回false
小于等于運算符(<=): 用于判斷左操作數是否小于或等于右操作數。例如:
- 3 <= 5 返回true
- 5 <= 3 返回false
- 5 <= 5 返回true
?邏輯運算符
在Java編程中,邏輯運算符是用于連接布爾類型的表達式或值的重要工具。它們可以將多個條件組合成一個整體邏輯表達式,從而構建更復雜的判斷條件。以下是Java中主要的邏輯運算符及其詳細說明:
邏輯與(&):
- 表示"并且"的關系
- 運算規則:遇false則false
- 特點:沒有短路效果,無論左邊表達式的結果是true還是false,右邊表達式都會執行
- 示例:
(a > 5) & (b < 10)
?只有當a大于5且b小于10時,整個表達式才為true
邏輯或(|):
- 表示"或者"的關系
- 運算規則:遇true則true
- 特點:沒有短路效果,無論左邊表達式的結果是true還是false,右邊表達式都會執行
- 示例:
(x == 0) | (y == 0)
?只要x等于0或者y等于0,整個表達式就為true
邏輯非(!):
- 表示"取反"操作
- 一元運算符,只需要一個操作數
- 示例:
!(age < 18)
?等同于判斷age是否大于等于18
邏輯異或(^):
- 表示"相同為false,不同為true"
- 當兩個操作數相同時返回false,不同時返回true
- 示例:
(a > b) ^ (c > d)
?當兩個比較結果相同時返回false,不同時返回true
短路與(&&):
- 表示"并且"的關系
- 具有短路效果:當左邊表達式為false時,右邊表達式不會執行
- 效率更高,是實際開發中最常用的與運算
- 示例:
(user != null) && (user.getName().equals("Admin"))
?可以避免NullPointerException
短路或(||):
- 表示"或者"的關系
- 具有短路效果:當左邊表達式為true時,右邊表達式不會執行
- 效率更高,是實際開發中最常用的或運算
- 示例:
(score >= 90) || (specialTalent == true)
?如果分數已經大于等于90,就不會檢查特殊才能
在實際編程中,短路運算符(&&和||)比非短路運算符(&和|)更常用,因為它們可以提高程序效率并避免不必要的計算。特別是在可能引發異常的判斷中(如檢查對象是否為null后再調用其方法),使用短路運算符可以避免程序崩潰。
三元運算符(三目運算符 )
基本語法格式
判斷條件 ? 值1 : 值2;
執行流程說明
條件評估階段:
- 首先計算判斷條件的值
- 這個條件可以是任何能返回布爾值的表達式(如比較運算、邏輯運算等)
結果選擇階段:
- 如果條件評估結果為
true
:- 整個表達式將返回
值1
值2
部分不會被執行
- 整個表達式將返回
- 如果條件評估結果為
false
:- 整個表達式將返回
值2
值1
部分不會被執行
- 整個表達式將返回
- 如果條件評估結果為
實際應用示例
// 簡單示例
let age = 20;
let status = (age >= 18) ? "成年人" : "未成年人";// 嵌套使用示例
let score = 85;
let grade = (score >= 90) ? "A" : (score >= 80) ? "B" : (score >= 70) ? "C" : "D";
注意事項
- 該運算符是JavaScript中唯一需要三個操作數的運算符
- 表達式中的
值1
和值2
可以是任意類型的值或表達式 - 雖然可以嵌套使用,但過度嵌套會降低代碼可讀性