文章目錄
- java基礎
- 3. 運算子
- 3.1 運算子介紹
- 3.2 算術運算子
- 3.3 關系運算子(比較運算子)
- 3.4 邏輯運算子
- 3.5 賦值運算子
- 3.6 三元運算子
- 3.7 運算子的優先級
- 3.8 識別符號命名規則與規范
- 3.9 關鍵字與保留字
- 3.10 鍵盤輸入
- 3.11 進制(程式員的基本功)
- ==進制介紹==
- (1):其他進制轉10進制
- (2)10進制轉其他進制
- (3) 2進制轉其他進制
- (4)其他進制轉2進制
- 3.12 **原碼、反碼、補碼**(重點 難點)
- 3.13 位運算
- 3.14 本章作業
java基礎
🚀🚀🚀
3. 運算子
3.1 運算子介紹
運算子是一種特殊的符號,用以表示資料的運算、賦值和比較等,
🔻
-
算術運算子
-
賦值運算子
-
關系運算子 [比較運算子]
-
邏輯運算子
-
位運算子 [需要二進制基礎]
-
三元運算子
🔺
3.2 算術運算子
算術運算子是對數值型別的變數進行運算的,在 Java 程式中使用的非常多,
算術運算子有哪些?📣

案例演示

🅾?: 除法/
// 除法/使用
System.out.println(10 / 4); //從數學來看是2.5, java中 2
System.out.println(10.0 / 4); //java是2.5
double d = 10 / 4;//java中10 / 4 = 2, 2=>2.0
System.out.println(d);// 是2.0
🅾?: 取模 %(取余)
取模的本質是一個公式:a % b = a - a / b * b
// -10 % 3 => -10 - (-10) / 3 * 3 = -10 + 9 = -1
// 10 % -3 = 10 - 10 / (-3) * (-3) = 10 - 9 = 1
// -10 % -3 = (-10) - (-10) / (-3) * (-3) = -10 + 9 = -1
System.out.println(10 % 3); //1
System.out.println(-10 % 3); // -1
System.out.println(10 % -3); //1
System.out.println(-10 % -3);//-1
🅾?: ++的使用
前置++:先自增,再使用
后置++:先使用,后自增
//++的使用
int i = 10;
i++;//自增 等價于 i = i + 1; => i = 11
++i;//自增 等價于 i = i + 1; => i = 12
System.out.println("i=" + i);//12
/*
作為運算式使用
前++:++i先自增后賦值
后++:i++先賦值后自增
*/
int j = 8;
//int k = ++j; //等價 j=j+1;k=j;
//System.out.println("k=" + k + "j=" + j);//9 9
int k = j++; // 等價 k =j;j=j+1;
System.out.println("k=" + k + "j=" + j);//8 9
面試題

1??: i = i ++ ,實際上先把i = 1 賦給了一個臨時變數 temp,然后 i 再自增1,最后又把 臨時變數 temp 賦給了 i ,所以結果仍然是1.
2??: i = ++ i,運算時是先自增,故 i先++到2 ,然后再賦給臨時變數temp,最后再把temp賦給 i ,故結果 是 2.
練習1
結果🔻 :
i = 10 i2 = 20
i = 19 i2 = 19
練習2

//1.需求:
//假如還有59天放假,問:合xx個星期零xx天
//2.思路分析
//(1) 使用int 變數 days 保存 天數
//(2) 一個星期是7天 星期數weeks: days / 7 零xx天leftDays days % 7
//(3) 輸出
//3.走代碼
int days = 25911;
int weeks = days / 7;
int leftDays = days % 7;
System.out.println(days + "天 合" + weeks + "星期零"
+ leftDays + "天");
//1.需求
//定義一個變數保存華氏溫度,華氏溫度轉換攝氏溫度的公式為
//:5/9*(華氏溫度-100),請求出華氏溫度對應的攝氏溫度
//
//2思路分析
//(1) 先定義一個double huaShi 變數保存 華氏溫度
//(2) 根據給出的公式,進行計算即可5/9*(華氏溫度-100)
// 考慮數學公式和java語言的特性
//(3) 將得到的結果保存到double sheShi
//3走代碼
double huaShi = 1234.6;
double sheShi = 5.0 / 9 * (huaShi - 100);
System.out.println("華氏溫度" + huaShi
+ " 對應的攝氏溫度=" + sheShi);
3.3 關系運算子(比較運算子)
-
關系運算子的結果都是 boolean 型,也就是要么是 true,要么是 false
-
關系運算式經常用在 if 結構的條件中或回圈結構的條件中
🔻:關系運算子一覽

案例演示
int a = 9; //提示: 開發中,不可以使用 a, b
int b = 8;
System.out.println(a > b); //ture
System.out.println(a >= b); //ture
System.out.println(a <= b); //false
System.out.println(a < b);//false
System.out.println(a == b); //false
System.out.println(a != b); //ture
boolean flag = a > b;
System.out.println("flag=" + flag); //flag=ture

3.4 邏輯運算子
用于連接多個條件(多個關系運算式),最終的結果也是一個==boolean 值==,
🔻:邏輯運算子一覽
分為兩組學習
-
短路與 && , 短路或 ||,取反 !
-
邏輯與 &,邏輯或 | , ^ 邏輯異或

👉 邏輯運算規則:
-
a&b :當 a 和 b 同時為 true ,則結果為 true, 否則為 false
-
a&&b : 當 a 和 b 同時為 true ,則結果為 true,否則為 false
-
a|b : 當 a 和 b ,有一個為 true ,則結果為 true,否則為 false
-
a||b: 當 a 和 b ,有一個為 true ,則結果為 true,否則為 false
-
!a : 叫取反,或者非運算,當 a 為 true, 則結果為 false,
當 a 為 false 是,結果為 true
-
a^b: 當 a 和 b 不同時,則結果為 true, 否則為 false,(異或異為真)
&&和&的區別
兩者輸出的結果都相同,但是運算的邏輯不同
對于&&(短路與),如果第一個條件為 false ,后面的條件不再判斷
對于&(邏輯與),如果第一個條件為 false ,后面的條件仍然會判斷
int a = 4;
int b = 9;
//&
if(a < 1 & ++b < 50)
{
System.out.println("ok300");//不輸出
}
System.out.println("a=" + a + " b=" + b);//a=4b=10
//&&
int a = 4;
int b = 9;
if(a < 1 && ++b < 50)(++b沒有判斷)
{
System.out.println("ok300");//不輸出
}
System.out.println("a=" + a + " b=" + b);//a=4b=9
| 和 || 的區別
對于||(短路或),如果第一個條件為 ture ,后面的條件不再判斷
對于|(邏輯或),如果第一個條件為 ture ,后面的條件仍然會判斷
int a = 4;
int b = 9;
// |
if( a > 1 | ++b > 4) {
System.out.println("ok300");//輸出
}
System.out.println("a=" + a + " b=" + b); //4 10
// ||
int a = 4;
int b = 9;
if( a > 1 || ++b > 4) {
System.out.println("ok300");//輸出
}
System.out.println("a=" + a + " b=" + b); //4 9
🅾?:開發中, 我們使用的基本是使用短路與&&和短路或||, 效率高
! 和 ^(邏輯異或)
//! 操作是取反 T->F , F -> T
System.out.println(60 > 20); //T
System.out.println(!(60 > 20)); //F
//a^b: 叫邏輯異或,當 a 和 b 不同時,則結果為true, 否則為false
boolean b = (10 > 1) ^ ( 3 > 5);
System.out.println("b=" + b);//T
練習題
??
1?? : if陳述句中x++是后置++,故先使用后自增,所以 一開始x=5和6比較為假,比較完后x自增為6,++y先自增為6,再和6比較為真,而因為是邏輯與,所以if陳述句為假,不執行x=11,故結果為x=6,y=6,
2??:同1,x++ == 6為假,因為是短路與,所以不執行后面陳述句,if陳述句也為假,故結果為x=6,y=5,
3??: if陳述句中x++是后置++,故先使用后自增,所以 一開始x=5和5比較為真,比較完后x自增為6,++y先自增為6,再和5比較為假,而因為是邏輯或,所以 if陳述句為真,執行x =11.故結果為x =11,y=6
4??:同3,x++ == 5 為真,因為是短路或,不執行后面陳述句,if陳述句也為真,故結果為x =11,y=5
??

🐱結果為z=50,解釋:第一個if陳述句 z++== 46為真之后,z再自增1到47,y=ture(重點?? )為真,因為這里不是 “==” 而是 “=”,一個等號是賦值,即把ture賦給了y這個布爾型別,為真,故第一個if陳述句為真,執行z++,此時z=48;第二個if陳述句x=false為假,++z先自增到49再使用,49 == 49,為真,故第二個if陳述句為真,執行z++,z=50,
3.5 賦值運算子
賦值運算子就是將某個運算后的值,賦給指定的變數,
分為兩類👇
基本賦值運算子 =,[int a = 10]
復合賦值運算子 += ,-= ,*= , /= ,%= 等 , 重點講解一個 += ,其它的使用是一個道理
a += b; 等價 【a = a + b; 】
a -= b; 等價 【a = a - b; 】

詳解4??:
byte b =3;
b += 2;//等價于b = (byte)(b+2)
/*b = b+2 運行則會報錯,因為byte型別
參加運算會提升至int型別,int型別賦值給byte會報錯
*/
b++; //同理等價于 b= (byte)(b+1);
3.6 三元運算子
基本語法
條件運算式 ? 運算式 1: 運算式 2;
運算規則:
1?? :如果條件運算式為 true,運算后的結果是運算式 1;
2?? :如果條件運算式為 false,運算后的結果是運算式 2;
😑
public class TernaryOperator {
//撰寫一個main方法
public static void main(String[] args) {
int a = 10;
int b = 99;
// 解讀
// 1. a > b 為 false
// 2. 回傳 b--, 先回傳 b的值,然后在 b-1
// 3. 回傳的結果是99
int result = a > b ? a++ : b--;
System.out.println("result=" + result); //99
System.out.println("a=" + a); //10
System.out.println("b=" + b); //98
}
}
使用細節👇
1?? 運算式 1 和運算式 2 要為可以賦給接收變數的型別(或可以自動轉換) 【參照自動型別轉換】
2?? 三元運算子可以轉成 if–else 陳述句
//運算式1和運算式2要為可以賦給接收變數的型別
//(或可以自動轉換/或者強制轉換)
int a = 3;
int b = 8;
//int c = a > b ? 1.1 : 3.4;//不行,1.1和3.4都是double型別,不能賦給int型別
double d = a > b ? a : b + 3;//可以的,滿足 int -> double
//三元運算子可以轉成 if--else 陳述句
int a = 3;
int b = 8;
//int result = a > b ? a++ : b--;
if(a > b)
result = a++;
else
result = b--;
練習
求三個數中最大值
public class TernaryOperatorExercise {
//撰寫一個main方法
public static void main(String[] args) {
//案例:實作三個數的最大值
int n1 = 553;
int n2 = 33;
int n3 = 123;
//思路
//1. 先得到 n1 和 n2 中最大數 , 保存到 max1
//2. 然后再 求出 max1 和 n3中的最大數,保存到 max
int max1 = n1 > n2 ? n1:n2;
int max = max1 > n3 ? max1:n3;
System.out.println("max"+ max);
}
}
3.7 運算子的優先級
大致了解,不用刻意去背


3.8 識別符號命名規則與規范



3.9 關鍵字與保留字
關鍵字的定義和特點 (不用背)
定義:被 Java 語言賦予了特殊含義,用做專門用途的字串(單詞)
特點:關鍵字中所有字母都為小寫
保留字
Java 保留字:現有 Java 版本尚未使用,但以后版本可能會作為關鍵字使用,自己命名識別符號時要避免使用這些保留
字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
3.10 鍵盤輸入
介紹: 在編程中,需要接收用戶輸入的資料,就可以使用鍵盤輸入陳述句來獲取,Input.java , 需要一個 掃描器(物件), 就是
Scanner
步驟 :
-
匯入該類的所在包, java.util.*
-
創建該類物件(宣告變數)
-
呼叫里面的功能
import java.util.Scanner;//表示把java.util下的Scanner類匯入
public class Input {
//撰寫一個main方法
public static void main(String[] args) {
//演示接受用戶的輸入
//步驟
//Scanner類 表示 簡單文本掃描器,在java.util 包
//1. 引入/匯入 Scanner類所在的包
//2. 創建 Scanner 物件 , new 創建一個物件,體會
// myScanner 就是 Scanner類的物件
Scanner myScanner = new Scanner(System.in); //System.in就是從鍵盤輸入
//3. 接收用戶輸入了, 使用 相關的方法
System.out.println("請輸入名字");
//當程式執行到 next 方法時,會等待用戶輸入~~~
String name = myScanner.next(); //接收用戶輸入 字串
System.out.println("請輸入年齡");
int age = myScanner.nextInt(); //接收用戶輸入 int
System.out.println("請輸入薪水");
double sal = myScanner.nextDouble(); //接收用戶輸入double
System.out.println("人的資訊如下:");
System.out.println("名字=" + name
+ " 年齡=" + age + " 薪水=" + sal);
}
}
3.11 進制(程式員的基本功)
進制介紹
對于整數,有四種表示方式:
二進制:0,1 ,滿 2 進 1.以 0b 或 0B 開頭,
十進制:0-9 ,滿 10 進 1,
八進制:0-7 ,滿 8 進 1, 以數字 0 開頭表示,
十六進制:0-9 及 A(10)-F(15),滿 16 進 1. 以 0x 或 0X 開頭表示,此處的 A-F 不區分大小寫,
圖示:


進制的轉換
👇

(1):其他進制轉10進制


(2)10進制轉其他進制



(3) 2進制轉其他進制

(4)其他進制轉2進制


3.12 原碼、反碼、補碼(重點 難點)

🐙: 重點 : 計算機運行時都是以補碼的方式來運算的,但是最后的結果是要轉換成原碼來表示的
3.13 位運算
? java 中有 7 個位運算(&、|、^、~、>>、<<和 >>>),位運算也都是以補碼的方式來運算的
//位運算
public class BitOperator {
//撰寫一個main方法
public static void main(String[] args) {
//看老師的推導程序
//1. 先得到 2的補碼 => 2的原碼 00000000 00000000 00000000 00000010
// 2的補碼 00000000 00000000 00000000 00000010
//2. 3的補碼 3的原碼 00000000 00000000 00000000 00000011
// 3的補碼 00000000 00000000 00000000 00000011
//3. 按位&
// 00000000 00000000 00000000 00000010
// 00000000 00000000 00000000 00000011
// 00000000 00000000 00000000 00000010 & 運算后的補碼
// 運算后的原碼 也是 00000000 00000000 00000000 00000010
// 結果就是 2
System.out.println(2&3);//2
//推導
//1. 先得到 -2的原碼 10000000 00000000 00000000 00000010
//2. -2的 反碼 11111111 11111111 11111111 11111101
//3. -2的 補碼 11111111 11111111 11111111 11111110
//4. ~-2操作 00000000 00000000 00000000 00000001運算后的補碼
//5. 運算后的原碼 就是 00000000 00000000 00000000 00000001 => 1
System.out.println(~-2);//1
//推導
//1. 得到2的補碼 00000000 00000000 00000000 00000010
//2. ~2操作 11111111 11111111 11111111 11111101 運算后的補碼
//3. 運算后的反碼 11111111 11111111 11111111 11111100
//4. 運算后的原碼 10000000 00000000 00000000 00000011=>-3
System.out.println(~2); //-3
}
}
3.14 本章作業



🔚🔚🔚🔚😸
在校學生,0基礎學習java,如有問題,請多指教(^U^)ノ~YO
后續會繼續更新噠,如果對博主感興趣,麻煩點個關注和👍喲!😄😄😄
🚀🚀🚀

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/298313.html
標籤:其他
