03.01_Java語言基礎(邏輯運算符的基本用法)(掌握)
- A:邏輯運算符有哪些
- &,|,^,!
- &&,||
- B:案例演示
邏輯運算符的基本用法
class Demo1_Operator { public static void main(String[] args) { //&,|,^,! //int x = 10; //5 < x < 15 //x > 5 & x < 15 //邏輯與 & 並且and 遇false則false int a = 10; int b = 20; int c = 30; /*System.out.println(a < b & b < c); //true & true = true System.out.println(a < b & b > c); //true & false = false System.out.println(a > b & b < c); //false & true = false System.out.println(a > b & b > c); //false & false = false*/ //邏輯或 或or 遇true則true /*System.out.println(a < b | b < c); //true | true = true System.out.println(a < b | b > c); //true | false = true System.out.println(a > b | b < c); //false | true = true System.out.println(a > b | b > c); //false | flase = false*/ //邏輯異或 ^ 兩邊相同爲false,兩邊不同爲true /*System.out.println(a < b ^ b < c); //true | true = false System.out.println(a < b ^ b > c); //true | false = true System.out.println(a > b ^ b < c); //false | true = true System.out.println(a > b ^ b > c); //false | flase = false*/ //邏輯非! System.out.println(!true); //false System.out.println(!!true); //true } }
注意事項:
- a:邏輯運算符一般用於連接boolean類型的表達式或者值。
- b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
- 算術表達式:a + b
- 比較表達式:a == b(條件表達式)
- C:結論:
- &邏輯與:有false則false。
- |邏輯或:有true則true。
- ^邏輯異或:相同爲false,不同爲true。
- !邏輯非:非false則true,非true則false。
- 特點:偶數個不改變本身。
03.02_Java語言基礎(邏輯運算符&&和&的區別)(掌握)
- A:案例演示
- &&和&的區別?
- a:最終結果一樣。
- b:&&具有短路效果。左邊是false,右邊不執行。
- &是無論左邊是false還是true,右邊都會執行
- &&和&的區別?
- B:同理||和|的區別?
- C:開發中常用誰?
- &&,||,!
03.03_Java語言基礎(位運算符的基本用法1)(瞭解)
- A:位運算符有哪些
- &,|,^,~ ,>>,>>>,<<
B:案例演示
位運算符的基本用法1
&,|,^,~ 的用法
- &:有0則0
- |:有1則1
- ^:相同則0,不同則1
~:按位取反
class Demo1_Operator {
public static void main(String[] args) {
/*
* &,|,^,~ 的用法
* &:有0則0
* |:有1則1
* ^:相同則0,不同則1
* ~:按位取反
*/System.out.println(6 & 3); //2 System.out.println(6 | 3); //7 System.out.println(6 ^ 3); //5 System.out.println(~6); //-7? } } /* 110 & 011 ----------- 010 110 | 011 ----------- 111 110 ^ 011 ----------- 101 00000000 00000000 00000000 00000110 6的原碼反碼補碼都是本身 11111111 11111111 11111111 11111001 對6取反 - 00000000 00000000 00000000 00000001 --------------------------------------- 11111111 11111111 11111111 11111000 反碼 10000000 00000000 00000000 00000111 原碼(-7) */
03.04_Java語言基礎(位異或運算符的特點及面試題)(掌握)
A:案例演示
位(異或^)運算符的特點:
一個數據對另一個數據位異或兩次,該數本身不變。System.out.println(5 ^ 10 ^ 10);//5 System.out.println(5 ^ 10 ^ 5);//10
B:面試題:
請自己實現兩個整數變量的交換(不需要定義第三方變量)
int x = 10; int y = 5; //需要第三方變量,開發推薦用這種 /*int temp; temp = x; x = y; y = temp;*/ //不需要定義第三方變量,有弊端,有可能會超出int的取值範圍 /*x = x + y; //10 + 5 = 15 y = x - y; //15 - 5 = 10 x = x - y; //15 - 10 = 5*/ //不需要第三方變量,通過^來做 x = x ^ y; //x= 10 ^ 5 y = x ^ y; //y= 10 ^ 5 ^ 5 y = 10 x = x ^ y; //x= 10 ^ 5 ^ 10 x = 5
03.05_Java語言基礎(位運算符的基本用法2及面試題)(瞭解)
A:案例演示 >>,>>>,<<的用法:
- <<:左移 左邊最高位丟棄,右邊補齊0(左移幾位就乘以2的幾次冪)
- >>:右移 最高位是0,左邊補齊0;最高爲是1,左邊補齊1(向右移動幾位就是除以2的幾次冪)
- >>>:無符號右移 無論最高位是0還是1,左邊補齊0
B:面試題:最有效率的算出2 * 8的結果
System.out.println(2 << 3);
03.06_Java語言基礎(三元運算符的基本用法)(掌握)
- A:三元運算符的格式
- (關係表達式) ? 表達式1 : 表達式2;
- B:三元運算符的執行流程
C:案例演示
獲取兩個數中的最大值
int x = 10; int y = 5; int z; z = (x > y) ? x : y;
03.07_Java語言基礎(三元運算符的練習)(掌握)
- A:案例演示
- 比較兩個整數是否相同
-
int x = 10;
int y = 5;
boolean z;
z = (x == y) ? true : false;
B:案例演示
獲取三個整數中的最大值
//先比較任意兩個數的值,找出這兩個數中的最大值 int temp = (a > b) ? a : b; //用前兩個數的最大值與第三個數比較,獲取最大值 int max = (temp > c) ? temp : c; System.out.println("max =" + max);
03.08_Java語言基礎(鍵盤錄入的基本格式講解)(掌握)
- A:爲什麼要使用鍵盤錄入數據
- a:爲了讓程序的數據更符合開發的數據
- b:讓程序更靈活一下
- B:如何實現鍵盤錄入呢?
- 先照格式來。
- a:導包
- 格式:
- import java.util.Scanner;
- 位置:
- 在class上面。
- 格式:
- b:創建鍵盤錄入對象
- 格式:
- Scanner sc = new Scanner(System.in);
- 格式:
- c:通過對象獲取數據
- 格式:
- int x = sc.nextInt();
- 格式:
- C:案例演示
- 鍵盤錄入1個整數,並輸出到控制檯。
- 鍵盤錄入2個整數,並輸出到控制檯。
03.09_Java語言基礎(鍵盤錄入的練習1)(掌握)
- A:案例演示
- 鍵盤錄入練習:鍵盤錄入兩個數據,並對這兩個數據求和,輸出其結果
- B:案例演示
- 鍵盤錄入練習:鍵盤錄入兩個數據,獲取這兩個數據中的最大值
03.10_Java語言基礎(鍵盤錄入的練習2)(掌握)
- A:案例演示
- 鍵盤錄入練習:鍵盤錄入兩個數據,比較這兩個數據是否相等
B:案例演示
鍵盤錄入練習:鍵盤錄入三個數據,獲取這三個數據中的最大值
import java.util.Scanner; //導包 class Scanner { public static void main(String[] args) { Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象 //鍵盤錄入練習:鍵盤錄入兩個數據,比較這兩個數據是否相等 /*System.out.println("請輸入第一個整數:"); int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中 System.out.println("請輸入第二個整數:"); int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中 //boolean b = (x == y)? true : false; boolean b = (x == y); System.out.println(b);*/ //鍵盤錄入練習:鍵盤錄入三個數據,獲取這三個數據中的最大值 System.out.println("請輸入第一個整數:"); int x = sc.nextInt(); //將鍵盤錄入的數據存儲在x中 System.out.println("請輸入第二個整數:"); int y = sc.nextInt(); //將鍵盤錄入的數據存儲在y中 System.out.println("請輸入第三個整數:"); int z = sc.nextInt(); //將鍵盤錄入的數據存儲在y中 //定義臨時變量記錄住比較出前兩個變量中的最大值 int temp = (x > y) ? x : y; //將比較後的結果與第三個變量中的值比較,比較出三個數中的最大值 int max = (temp > z) ? temp : z; System.out.println(max); } }
03.11_Java語言基礎(順序結構語句)(瞭解)
- A:什麼是流程控制語句
- 流程控制語句:可以控制程序的執行流程。
- B:流程控制語句的分類
- 順序結構
- 選擇結構
- 循環結構
- C:執行流程:
- 從上往下,依次執行。
- D:案例演示
- 輸出幾句話看效果即可
03.12_Java語言基礎(選擇結構if語句格式1及其使用)(掌握)
- A:選擇結構的分類
- if語句
- switch語句
- B:if語句有幾種格式
- 格式1
- 格式2
- 格式3
- C:if語句的格式1
-
if(比較表達式) {
語句體;
} - D:執行流程:
- 先計算比較表達式的值,看其返回值是true還是false。
- 如果是true,就執行語句體;
- 如果是false,就不執行語句體;
03.13_Java語言基礎(選擇結構if語句注意事項)(掌握)
- A:案例演示
- a:比較表達式無論簡單還是複雜,結果必須是boolean類型
- b:if語句控制的語句體如果是一條語句,大括號可以省略;
- 如果是多條語句,就不能省略。建議永遠不要省略。
- c:一般來說:有左大括號就沒有分號,有分號就沒有左大括號
03.14_Java語言基礎(選擇結構if語句格式2及其使用)(掌握)
- A:if語句的格式2
-
if(比較表達式) {
語句體1;
}else {
語句體2;
} - B:執行流程:
- 首先計算比較表達式的值,看其返回值是true還是false。
- 如果是true,就執行語句體1;
- 如果是false,就執行語句體2;
C:案例演示
- a:獲取兩個數據中較大的值
b:判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數
class Demo_If {
public static void main(String[] args) {//a:獲取兩個數據中較大的值 /*int x = 10; int y = 20; int z; if (x > y) { z = x; }else { z = y; } System.out.println(z);*/ //b:判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數 int num = 11; if (num % 2 == 0) { System.out.println(num + "是一個偶數"); }else { System.out.println(num + "是一個奇數"); }
}
}- 注意事項:else後面是沒有比較表達式的,只有if後面有。
03.15_Java語言基礎(if語句的格式2和三元的相互轉換問題)(掌握)
- A:案例演示
- if語句和三元運算符完成同一個效果
B:案例演示
if語句和三元運算符的區別
三元運算符實現的,都可以採用if語句實現。反之不成立。
什麼時候if語句實現不能用三元改進呢?
- 當if語句控制的操作是一個輸出語句的時候就不能。
- 爲什麼呢?因爲三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。
03.16_Java語言基礎(選擇結構if語句格式3及其使用)(掌握)
- A:if語句的格式3:
-
if(比較表達式1) {
語句體1;
}else if(比較表達式2) {
語句體2;
}else if(比較表達式3) {
語句體3;
}
…
else {
語句體n+1;
} B:執行流程:
- 首先計算比較表達式1看其返回值是true還是false,
- 如果是true,就執行語句體1,if語句結束。
如果是false,接着計算比較表達式2看其返回值是true還是false,
如果是true,就執行語句體2,if語句結束。
如果是false,接着計算比較表達式3看其返回值是true還是false,
如果都是false,就執行語句體n+1。
- C:注意事項:最後一個else可以省略,但是建議不要省略,可以對範圍外的錯誤值提示
03.17_Java語言基礎(選擇結構if語句格式3練習)(掌握)
- A:練習1
需求:鍵盤錄入一個成績,判斷並輸出成績的等級。 90-100 優 80-89 良 70-79 中 60-69 及 0-59 差 import java.util.Scanner; class Test { public static void main(String[] args) { Scanner cin = new Scanner(System.in); int score = cin.nextInt(); if(score>=90&&score<=100){ System.out.println("優"); }else if(score>=80&&score<90){ System.out.println("良"); }else if(score>=70&&score<80){ System.out.println("中"); }else if(score>=60&&score<70){ System.out.println("及"); }else if(score>=0&&score<60){ System.out.println("差"); }else{ System.out.println("score輸入錯誤"); } } }
B:練習2
需求:
鍵盤錄入x的值,計算出y的值並輸出。
x>=3 y = 2 * x + 1;
- -1
03.18_Java語言基礎(選擇結構if語句的嵌套使用)(掌握)
- A:案例演示
- 需求:獲取三個數據中的最大值
- if語句的嵌套使用。
03.19_Java語言基礎(選擇結構switch語句的格式及其解釋)(掌握)
- A:switch語句的格式
switch(表達式) { case 值1: 語句體1; break; case 值2: 語句體2; break; … default: 語句體n+1; break; }
B:switch語句的格式解釋
- 基本數據類型可以接收byte,short,char,int
- 引用數據類型可以接收枚舉(JDK1.5)String字符串(JDK1.7)
- C:面試題
- byte可以作爲switch的表達式嗎? 可以
- long可以作爲switch的表達式嗎? 不可以
- String可以作爲switch的表達式嗎? 可以
- C:執行流程
- 先計算表達式的值
- 然後和case後面的匹配,如果有就執行對應的語句,否則執行default控制的語句
03.20_Java語言基礎(選擇結構switch語句的練習)(掌握)
- A:整數(給定一個值,輸出對應星期幾)
03.21_Java語言基礎(選擇結構switch語句的注意事項)(掌握)
- A:案例演示
- a:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
- b:default可以省略嗎?
- 可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。
- 特殊情況:
- case就可以把值固定。
- A,B,C,D
- c:break可以省略嗎?
- 最後一個可以省略,其他最好不要省略
- 會出現一個現象:case穿透。
- 最終我們建議不要省略
- d:default一定要在最後嗎?
- 不是,可以在任意位置。但是建議在最後。
- e:switch語句的結束條件
- a:遇到break就結束了
- b:執行到switch的右大括號就結束了
03.22_Java語言基礎(選擇結構switch語句練習)(掌握)
- A:看程序寫結果:
int x = 2; int y = 3; switch(x){ default: y++; break; case 3: y++; case 4: y++; } System.out.println("y="+y);//y=4
B:看程序寫結果:
-
int x = 2;
int y = 3;
switch(x){
default:
y++;
case 3:
y++;
case 4:
y++;
}
System.out.println(“y=”+y);//y=6
03.23_Java語言基礎(選擇結構if語句和switch語句的區別)(掌握)
- A:總結switch語句和if語句的各自使用場景
- switch建議判斷固定值的時候用
- if建議判斷區間或範圍的時候用
B:案例演示
分別用switch語句和if語句實現下列需求:
鍵盤錄入月份,輸出對應的季節
import java.util.Scanner; class Test3_SwitchIf { public static void main(String[] args) { /** 鍵盤錄入月份,輸出對應的季節 一年有四季 3,4,5春季 6,7,8夏季 9,10,11秋季 12,1,2冬季 */ Scanner sc = new Scanner(System.in); //創建鍵盤錄入對象 System.out.println("請輸入月份"); int month = sc.nextInt(); //將鍵盤錄入的結果存儲在month /*switch (month) { case 3: case 4: case 5: System.out.println(month + "月是春季"); break; case 6: case 7: case 8: System.out.println(month + "月是夏季"); break; case 9: case 10: case 11: System.out.println(month + "月是秋季"); break; case 12: case 1: case 2: System.out.println(month + "月是冬季"); break; default: System.out.println("對不起沒有對應的季節"); break; }*/ //用if語句來完成月份對應季節 if (month > 12 || month < 1) { System.out.println("對不起沒有對應的季節"); }else if (month >= 3 && month <= 5) { System.out.println(month + "月是春季"); }else if (month >= 6 && month <= 8) { System.out.println(month + "月是夏季"); }else if (month >= 9 && month <= 11) { System.out.println(month + "月是秋季"); }else { System.out.println(month + "月是冬季"); }
}
}
03.24_day03總結
把今天的知識點總結一遍。