邏輯/位與/三元/if/switch
邏輯運算符的基本用法
A:邏輯運算符有哪些
- &,|,^,!分別是邏輯與、邏輯或、邏輯異或、邏輯非(前面三個都是至少有兩個參數比較)。
- &&,||
邏輯異或^兩邊相同爲false,不同爲true,可以看成是異性戀,同性就不行,會pass掉
注意事項:
- a:邏輯運算符一般用於連接boolean類型的表達式或者值。
- b:表達式:就是用運算符把常量或者變量連接起來的符合java語法的式子。
- 算術表達式:a + b
- 比較表達式:a == b(條件表達式)
- C:結論:
- &邏輯與:有false則false。
- |邏輯或:有true則true。
- ^邏輯異或:相同爲false,不同爲true。
- !邏輯非:非false則true,非true則false。
- 特點:偶數個不改變本身。
邏輯運算符&&和&的區別
- A:案例演示
- &&和&的區別?
- a:最終結果一樣。
- b:&&具有短路效果。左邊是false,右邊不執行。
- &是無論左邊是false還是true,右邊都會執行
- &&和&的區別?
- B:同理||和|的區別?(學生自學)
- C:開發中常用誰?
- &&,||,!
位運算符的基本用法
- A:位運算符有哪些
- &,|,^,~ ,>>,>>>,<<
- 位與,位或,位異或
B:案例演示
位運算符的基本用法1
&,|,^,~ 的用法把0看成false.1看成true
- &:有0則0
- |:有1則1
- ^:相同則0,不同則1
- ~:按位取反(原碼取反減去1在去反碼,得到原碼)
位異或運算符的特點及面試題
A:案例演示
位異或運算符的特點
^的特點:一個數據對另一個數據位異或兩次,該數本身不變。(比如5^7^7=5)
B:面試題:
- 請自己實現兩個整數變量的交換
開發中常常是有第三種個變量來參與
面試中要求兩個變量,那麼就要塑造一個僞小三,
第一種答案(有弊端,加減有可能超過int的取值範圍)
x=2;y=4
x=x+y;
y=x-y;
x=x-y
或者:x=3;y=9;
x=x-y;
y=x+y;
x=y-x
第二種答案:利用異或的特性:一個數據對另一個數據位異或兩次,該數本身不變
x=x^y;
y=x^y;
x=y^x
延伸題:如何用5L和3L的玻璃杯測出4L的水;
- 請自己實現兩個整數變量的交換
把3升裝滿倒入空5升瓶裏,再把3升裝滿倒入5升瓶裏這時3升瓶裏還剩1升。把1升倒進空5升瓶裏,再把3升裝滿倒進5升瓶裏,得到4升水
位運算符的基本用法2及面試題
- A:案例演示 >>,>>>,<<的用法:
- <<:左移 左邊最高位丟棄,右邊補齊0
- >>:右移 最高位是0,左邊補齊0;最高爲是1,左邊補齊1
- >>>:無符號右移 無論最高位是0還是1,左邊補齊0
- 最有效率的算出2 * 8的結果
三元運算符的基本用法
- A:三元運算符的格式
- a(關係表達式) ? 表達式1 : 表達式2;
- B:三元運算符的執行流程 賦值
- 如果表達式爲真,則a=1,a=2
三元運算符的練習
- A:案例演示
- 比較兩個整數是否相同
- B:案例演示
- 獲取三個整數中的最大值
順序結構語句
- A:什麼是流程控制語句
- 流程控制語句:可以控制程序的執行流程。
- B:流程控制語句的分類
- 順序結構
- 選擇結構
- 循環結構
- C:執行流程:
- 從上往下,依次執行。
選擇結構if語句格式1及其使用
- A:選擇結構的分類
- if語句
- switch語句
- B:if語句有幾種格式
- 格式1
- 格式2
- 格式3
- C:if語句的格式1
-
if(比較表達式) {
語句體;
} - D:執行流程:
- 先計算比較表達式的值,看其返回值是true還是false。
- 如果是true,就執行語句體;
- 如果是false,就不執行語句體;
選擇結構if語句注意事項
- A:案例演示
- a:比較表達式無論簡單還是複雜,結果必須是boolean類型
- b:if語句控制的語句體如果是一條語句,大括號可以省略;
- 如果是多條語句,就不能省略。建議永遠不要省略。
- c:一般來說:有左大括號就沒有分號,有分號就沒有左大括號
選擇結構if語句格式2及其使用
- A:if語句的格式2
-
if(比較表達式) {
語句體1;
}else {
語句體2;
} - B:執行流程:
- 首先計算比較表達式的值,看其返回值是true還是false。
- 如果是true,就執行語句體1;
- 如果是false,就執行語句體2;
C:案例演示
- a:獲取兩個數據中較大的值
b:判斷一個數據是奇數還是偶數,並輸出是奇數還是偶數
注意事項:else後面是沒有比較表達式的,只有if後面有。
if語句的格式2和三元的相互轉換問題
- A:案例演示
- if語句和三元運算符完成同一個效果
B:案例演示
if語句和三元運算符的區別
三元運算符實現的,都可以採用if語句實現。反之不成立。
什麼時候if語句實現不能用三元改進呢?
- 當if語句控制的操作是一個輸出語句的時候就不能。
- 爲什麼呢?因爲三元運算符是一個運算符,運算符操作完畢就應該有一個結果,而不是一個輸出。
選擇結構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可以省略,但是建議不要省略,可以對範圍外的錯誤值提示
選擇結構if語句的嵌套使用
- A:案例演示
- 需求:獲取三個數據中的最大值
- if語句的嵌套使用。
選擇結構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的表達式嗎?
* 在Java7之前,switch只能支持 byte、short、char、int或者其對應的封裝類以及Enum類型。在Java7中,也支持了String類型。double沒門
- C:執行流程
- 先計算表達式的值
- 然後和case後面的匹配,如果有就執行對應的語句,否則執行default控制的語句
選擇結構switch語句的注意事項
- A:案例演示
- a:case後面只能是常量,不能是變量,而且,多個case後面的值不能出現相同的
- b:default可以省略嗎?
- 可以省略,但是不建議,因爲它的作用是對不正確的情況給出提示。
- 特殊情況:
- case就可以把值固定。
- A,B,C,D多值
switch (i)
{
case 1:case 2:case 3:case 4:
Console.WriteLine("ok!**********");
break;
case 5:
Console.WriteLine("wrong!*******");
break;
default:
Console.WriteLine("default case!*********");
break;
}
}
- c:break可以省略嗎?
- 最後一個可以省略,其他最好不要省略
- 會出現一個現象:case穿透。
- 最終我們建議不要省略
- d:default一定要在最後嗎?
- 不是,可以在任意位置。但是建議在最後。
- e:switch語句的結束條件
- a:遇到break就結束了
- b:執行到switch的右大括號就結束了
選擇結構if語句和switch語句的區別
- A:總結switch語句和if語句的各自使用場景
- switch建議判斷固定值的時候用
- if建議判斷區間或範圍的時候用
201611080027