摘要
- 邏輯運算符和位運算符
- 鍵盤錄入
- 順序結(jié)構(gòu)和選擇結(jié)構(gòu)
邏輯運算符的基本用法
- 邏輯運算符有哪些
- &,|,^,!
- &&,||
- 注意事項:
- a:邏輯運算符一般用于連接boolean類型的表達式或者值。
- b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
- 算術(shù)表達式:a + b
- 比較表達式:a == b(條件表達式)
- C:結(jié)論:
- &邏輯與:有false則false。
- |邏輯或:有true則true。
- ^邏輯異或:相同為false,不同為true。
- !邏輯非:非false則true,非true則false。
- 特點:偶數(shù)個不改變本身。
邏輯運算符&&和&的區(qū)別
- A:案例演示
- &&和&的區(qū)別?
- a:最終結(jié)果一樣。
- b:&&具有短路效果。左邊是false,右邊不執(zhí)行。
- &是無論左邊是false還是true,右邊都會執(zhí)行
- &&和&的區(qū)別?
- B:同理||和|的區(qū)別?
- C:開發(fā)中常用
- &&,||,!
位運算符的基本用法1
- 位運算符有哪些
- &(與),|(或),^(異或),~ (取反),>>(有符號右移),>>>(無符號右移),<<(左移)
- &,|,^,~ 的用法
- &:有0則0
- |:有1則1
- ^:相同則0,不同則1
- ~:按位取反
位異或運算符的特點及面試題(掌握)
-
A:案例演示
位異或運算符的特點
^的特點:一個數(shù)據(jù)對另一個數(shù)據(jù)位異或兩次,該數(shù)本身不變。
-
B:面試題:
- 請自己實現(xiàn)兩個整數(shù)變量的交換(不定義第三個變量)
1. x = x + y; y = x - y; x = x - y;(相加可能產(chǎn)生溢出) 2. x = x ^ y; y = x ^ y; x = x ^ y;
位運算符的基本用法2及面試題(了解)
- A:案例演示 >>,>>>,<<的用法:
- <<:左移 左邊最高位丟棄,右邊補齊0(左移幾位就是乘以2的幾次冪)
- >>:右移 最高位是0,左邊補齊0;最高為是1,左邊補齊1(正數(shù)右移幾位就是除以2的幾次冪)
- >>>:無符號右移 無論最高位是0還是1,左邊補齊0
- 最有效率的算出2 * 8的結(jié)果
2<<3
三元運算符的基本用法
- A:三元運算符的格式
(關(guān)系表達式) ? 表達式1 : 表達式2;
三元運算符的練習
- A:案例演示
- 比較兩個整數(shù)是否相同
x==y
- 比較兩個整數(shù)是否相同
- B:案例演示
- 獲取三個整數(shù)中的最大值
x>y?(x>z?x:z):(y>z?y:z)
鍵盤錄入的基本格式
- A:為什么要使用鍵盤錄入數(shù)據(jù)
- a:為了讓程序的數(shù)據(jù)更符合開發(fā)的數(shù)據(jù)
- b:讓程序更靈活一下
- B:如何實現(xiàn)鍵盤錄入呢?
- 先照格式來。
- a:導包
- 格式:
- import java.util.Scanner;
- 位置:
- 在class上面。
- 格式:
- b:創(chuàng)建鍵盤錄入對象
- 格式:
- Scanner sc = new Scanner(System.in);
- 格式:
- c:通過對象獲取數(shù)據(jù)
- 格式:
- int x = sc.nextInt();
- 格式:
順序結(jié)構(gòu)語句
- A:什么是流程控制語句
- 流程控制語句:可以控制程序的執(zhí)行流程。
- B:流程控制語句的分類
- 順序結(jié)構(gòu)
- 選擇結(jié)構(gòu)
- 循環(huán)結(jié)構(gòu)
- C:執(zhí)行流程:
- 從上往下,依次執(zhí)行。
選擇結(jié)構(gòu)if語句格式1及其使用 (掌握)
-
A:選擇結(jié)構(gòu)的分類
- if語句
- switch語句
-
B:if語句有幾種格式
- 格式1
- 格式2
- 格式3
-
C:if語句的格式1
if(比較表達式) { 語句體; } -
D:執(zhí)行流程:
- 先計算比較表達式的值,看其返回值是true還是false。
- 如果是true,就執(zhí)行語句體;
- 如果是false,就不執(zhí)行語句體;
選擇結(jié)構(gòu)if語句注意事項
- A:案例演示
- a:比較表達式無論簡單還是復雜,結(jié)果必須是boolean類型
- b:if語句控制的語句體如果是一條語句,大括號可以省略;
- 如果是多條語句,就不能省略。建議永遠不要省略。(int x=10 是兩條語句,聲明和賦值。)
- c:一般來說:有左大括號就沒有分號,有分號就沒有左大括號
選擇結(jié)構(gòu)if語句格式2及其使用
-
A:if語句的格式2
if(比較表達式) { 語句體1; }else { 語句體2; } -
B:執(zhí)行流程:
首先計算比較表達式的值,看其返回值是true還是false。
如果是true,就執(zhí)行語句體1;
如果是false,就執(zhí)行語句體2;
注意事項:else后面是沒有比較表達式的,只有if后面有。
if語句的格式2和三元的相互轉(zhuǎn)換問題
- A:案例演示
- if語句和三元運算符完成同一個效果
- B:案例演示
if語句和三元運算符的區(qū)別
三元運算符實現(xiàn)的,都可以采用if語句實現(xiàn)。反之不成立。
-
什么時候if語句實現(xiàn)不能用三元改進呢?
- 當if語句控制的操作是一個輸出語句的時候就不能。
- 為什么呢?因為三元運算符是一個運算符,運算符操作完畢就應(yīng)該有一個結(jié)果,而不是一個輸出。
選擇結(jié)構(gòu)if語句格式3及其使用
-
A:if語句的格式3:
if(比較表達式1) { 語句體1; }else if(比較表達式2) { 語句體2; }else if(比較表達式3) { 語句體3; } ... else { 語句體n+1; } -
B:執(zhí)行流程:
首先計算比較表達式1看其返回值是true還是false,
如果是true,就執(zhí)行語句體1,if語句結(jié)束。
如果是false,接著計算比較表達式2看其返回值是true還是false,
如果是true,就執(zhí)行語句體2,if語句結(jié)束。
如果是false,接著計算比較表達式3看其返回值是true還是false,
如果都是false,就執(zhí)行語句體n+1。
C:注意事項:最后一個else可以省略,但是建議不要省略,可以對范圍外的錯誤值提示
選擇結(jié)構(gòu)switch語句的格式及其解釋
-
A:switch語句的格式
switch(表達式) { case 值1: 語句體1; break; case 值2: 語句體2; break; … default: 語句體n+1; break; } B:switch語句的格式解釋
-
C:面試題
- byte可以作為switch的表達式嗎?可以
- long可以作為switch的表達式嗎?不可以
- String可以作為switch的表達式嗎?可以
- 基本數(shù)據(jù)類型可以接收byte,short,char,int;引用數(shù)據(jù)類型可以接收枚舉(JDK1.5)String(JDK1.7)
-
C:執(zhí)行流程
- 先計算表達式的值
- 然后和case后面的匹配,如果有就執(zhí)行對應(yīng)的語句,否則執(zhí)行default控制的語句
選擇結(jié)構(gòu)switch語句的注意事項
- A:案例演示
- a:case后面只能是常量,不能是變量,而且,多個case后面的值不能出現(xiàn)相同的
- b:default可以省略嗎?
- 可以省略,但是不建議,因為它的作用是對不正確的情況給出提示。
- 特殊情況:
- case就可以把值固定。
- A,B,C,D
- c:break可以省略嗎?
- 最后一個可以省略,其他最好不要省略
- 會出現(xiàn)一個現(xiàn)象:case穿透。
- 最終我們建議不要省略
- d:default一定要在最后嗎?
- 不是,可以在任意位置(不影響執(zhí)行)。但是建議在最后。
- e:switch語句的結(jié)束條件
- a:遇到break就結(jié)束了
- b:執(zhí)行到switch的右大括號就結(jié)束了
選擇結(jié)構(gòu)switch語句練習
-
A:看程序?qū)懡Y(jié)果:
int x = 2; int y = 3; switch(x){ default: y++; break; case 3: y++; case 4: y++; } System.out.println("y="+y); 結(jié)果:y=4 -
B:看程序?qū)懡Y(jié)果:
int x = 2; int y = 3; switch(x){ default: y++; case 3: y++; case 4: y++; } System.out.println("y="+y); 結(jié)果:y=6
選擇結(jié)構(gòu)if語句和switch語句的區(qū)別
- A:總結(jié)switch語句和if語句的各自使用場景
- switch建議判斷固定值的時候用
- if建議判斷區(qū)間或范圍的時候用