一、運算符和表達式
? ? 舉例說明什么是運算符,什么是表達式:
int a = 1;
int b = 2;
int c = a + b;
在這個例子當中,+是運算符,并且是算術運算符
a+b是表達式,因為+是運算符,所以a+b是算術表達式
1.1算術運算符
符號 | 作用 |
+ | 加 |
- | 減 |
* | 乘 |
/ | 除 |
% | 取模,取余 |
舉例說明除法和取模、取余:
public class ArithmeticDemo2 {public static void main(String[] args){//除法System.out.println(10 / 2);//5System.out.println(10 / 3);//3System.out.println(10.0 / 3);//3.3333333333333335//取模、取余System.out.println(10 % 2);//0System.out.println(10 % 3);//1System.out.println(1234 % 10);//4}
}
取模的應用場景:
- 可以用取模來判斷,A是否可以被B整除
- 判斷A是否為偶數-->A%2如果是0,則A是偶數;否則A就是奇數
- 斗地主發牌中三個玩家,每張牌都定義一個序號;當序號%3為1,發給第一個玩家;結果為2,發給第二個玩家,結果為0,發給第三個玩家
練習:鍵盤上錄入一個三位數,打印輸出個位、十位、百位數字
import java.util.Scanner;public class text1 {public static void main(String[] args){//鍵盤錄入一個三位數,獲取其中的個位、十位、百位//1.鍵盤錄入Scanner sc = new Scanner(System.in);System.out.println("請輸入一個三位數");int number = sc.nextInt();//2.獲取個位、十位、百位//個位:數字%10;//十位:數字/10%10//百位:數字/10/10%10int ge = number % 10;int shi = number / 10 % 10;int bai = number / 100 % 10;System.out.println(ge);System.out.println(shi);System.out.println(bai);}
}
數字相加
數字進行運算時,數據類型不一樣不能運算,需要轉成應用的,才能運算。
類型轉換的分類:
- 隱式轉換(自動類型提升)把一個取值范圍小的數值,轉成取值范圍大的數據
規則:取值范圍小的,和取值范圍大的進行運算,小的先提升為大的,再進行運算。
? ? ? ? ? byte? short? char三種類型的數據在運算的時候,都會直接先提升為int,然后再進行運算。
- 強制轉換 -->格式:目標數據類型 變量名 = (目標數據類型)被強轉的數據;
字符串的“+”操作
- 當“‘+”操作中出現字符串時,這個“+”是字符串連接符,而不是算術運算符。會將前后的數據進行拼接,產生一個新的字符串。
- 連續進行“+”操作時,從左到右逐個執行。
字符相加
byte、short、char三種類型的數據在運算的時候,都會先提升為int,然后再進行運算
當字符+字符(字符+數字)時,會把字符通過ASCII碼表查詢到對應的數字再計算。
注意事項:
- /取結果的商,%取結果的余數
- 整數操作只能得到整數,要想得到小數,必須要有浮點數參與運算。
二、自增自減運算符
++和--可以放變量之前也可以之后,單獨寫一行結果是一樣的。
- int a = 10;int b = a++;? ? ?先用后加
- int a = 10;int b = ++a;? ? ?先加后用
舉例來說:
public class ArithmeticDemo4 {public static void main(String[] args) {int x = 10;//后++:先用后加//先把x變量中的值拿出來用,賦值給y,然后進行自增int y = x++;//x=11 y=10//先++:先加后用//先把x變量中的值自增,然后把結果賦值給zint z = ++x;//x=12 z=12System.out.println("x:" + x);System.out.println("y:" + y);System.out.println("z:" + z);}
}
三、賦值運算符?
分類:
符號 | 作用 | 說明 |
= | 賦值 | int a = 10,將10賦值給變量a |
+= | 加后賦值 | a+=b,將a+b的值給a |
-= | 減后賦值 | a-=b,將a-b的值給a |
*= | 乘后賦值 | a*=b,將a*b的值給a |
/= | 除后賦值 | a/=b,將a/b的商給a |
%= | 取余后賦值 | ;a%=b,將a/b的余數給a |
public class ArithmeticDemo5 {public static void main(String[] args){int a = 10;int b = 20;//把a+b賦值給aa += b;//等同于a = (int)(a+b)System.out.println(a);//30System.out.println(b);//20short s = 1;s += 1;//把s+1賦值給s//等同于s = (short)(s + 1)System.out.println(s);//2}
}
注意:在賦值運算符的底層會進行強制轉換。
四、關系運算符
又被稱作比較運算符,在關系運算符中,運算符的結果都是boolean類型,結果是true或false,沒有其他情況。
五、邏輯運算符
分類:
符號 | 作用 | 說明 |
& | 邏輯與(且) | 并且,兩邊都為真,結果才是真 |
| | 邏輯或 | 或者,兩邊都為假,結果才是假 |
^ | 邏輯異或 | 相同為false,不同為true |
! | 邏輯非 | 取反 |
短路邏輯運算符
- &&? ? ? ? 短路與? ? ? ? 結果和&相同,但是有短路效果
- ||? ? ? ? ? ?短路或? ? ? ? 結果和|相同,但是有短路效果
注意事項:
- &|,無論左邊true、false,右邊都要執行
- &&? ||,如果左邊能確定整個表達式的結果,右邊不執行
- &&:左邊為false,右邊不管是真是假,整個表達式的結果一定是false。
- ||:左邊為true,右邊不管是真是假,整個表達式的結果一定是true。
- 最常用的邏輯運算符:&&,||,!