=============================================================================
涉及到的知識點有:
0:基本概念概述
1:運算
2:運算符
3:操作數
4:表達式
1:運算符(掌握)
(1)算術運算符(掌握)
(2)指派運算符(掌握)
(3)比較(關系)運算符(掌握)
(4)邏輯運算符(掌握)
(5)位運算符(了解)
(6)三元(三目/條件)運算符(掌握)
2:鍵盤錄入(掌握)
3:流程控制語句
4:if語句(掌握)
(1)三種格式:
(2)注意事項:
(3)案例:
(4)三元運算符和if語句第二種格式的關系:
對常量和變量進行操作的過程稱為運算。
對常量和變量進行操作的符号稱為運算符。
參與運算的資料稱為操作數
用運算符把常量或者變量連接配接起來符合java文法的式子就可以稱為表達式。
不同運算符連接配接的式子展現的是不同類型的表達式。
舉例:
int a = 3 + 4;
這是做了一個加法運算。
+就是運算符,且是算術運算符,我們還有其他很多的運算符。
3,4就是參與運算的操作資料。
3 + 4整體其實就是一個算數表達式。
-----------------------------------------------------------------------------
A:+, -, *, /, %, ++, --
B:+的用法:
a:加法;
b:正号;
c:字元串連接配接(拼接)符。 例如:System.out.println("x="+x+",y="+y);
如下如圖所示00:

C:/和%的差別:
資料做除法操作的時候,/取得是商,%取得是餘數。
如下圖所示01:
D:++和--的用法:
a:他們的作用是:對變量進行自增1或者自減1。
b:使用:
**單獨使用時:
放在操作資料的前面和後面效果是一樣。
即:a++或者++a效果一樣。
**參與操作使用時:
放在操作數的前面時:先自增1或者自減1,再參與操作。
int a = 10;
int b = ++a; //a = 11; b = 11;
放在操作數的後面時:先參與操作,再自增1或者自減1。
int b = a++; //b = 10; a = 11;
如下圖所示02/03:
---------------------------------------
A: 基本的指派運算符:=
把=右邊的資料指派給左邊。
擴充的指派運算符:+=, -=, *=, /=, %=, 等等。
+= 把左邊和右邊資料做加法後,然後将結果指派給左邊。
B:=叫做指派運算符,也是最基本的指派運算符。
int x = 10; //把10指派給int類型的變量x。
C:擴充的指派運算符的特點:
擴充的指派運算符隐含了自動強制轉換。
即:s += 1;
不是等價于 s = s + 1;
而是等價于 s = (s的資料類型)(s + 1);
面試題:
short s = 1; //編譯有問題,報錯,可能損失精度。
s = s + 1; //short類型參與運算的時候預設轉換為int類型。而把int類型指派給short類型會有問題。
short s = 1; //沒有問題。
s += 1; //因為+=隐含了自動強制轉換。
請問上面的代碼哪個有問題?
A:==, !=, >, >=, <, <=, instanceof(後面講)
B:無論運算符兩端是簡單還是複雜最終結果是boolean類型。
C:千萬不要把==寫成了=了。
D:>=, <=隻要有一個滿足即可,即:不管是大于,還是等于;或者不管是小于,還是等于。
如下圖所示04:
A: &, |, ^, !, &&, ||
如下圖所示05:
B:邏輯運算符用于連接配接boolean類型的表達式,在java中不可以寫成3<x<6,而是應該寫成x>3&x<6。
表達式:用運算符把常量或者變量連接配接起來符合java文法的式子就可以稱為表達式。
例如:
算術表達式:a + b
比較表達式:a == b
C:結論:
邏輯與&:有false則false。
邏輯或|:有true則true。
邏輯異或^:相同則false,不同則true。
舉例情侶關系:男男為false,女女為false,男女為true,女男為true。
邏輯非!:非true則false,非false則true。
偶數個歎号!不改變布爾類型,奇數個歎号!改變類型。
邏輯雙與&&:最終的結果和&是一樣的,隻不過有短路效果。隻要左邊是false,右邊就不執行。
邏輯雙或||:最終的結果和|是一樣的,隻不過有短路效果。隻要左邊是true,右邊就不執行。
是以雙與(雙或)的效率更高!!!
小結:在開發中常用的邏輯運算符為:&&, ||, ! 。
因為我們一般是做十進制的運算的,而位運算是做的二進制的運算,是以我們一般不需要掌握,但是需要聽懂!
因為在底層源碼中看大量看到位運算,因為我們的所有的操作在計算機底層都會變成為位運算。可以提高程式的效率。
如下如所示06:
要做位運算,首先要把資料轉換為二進制。而且還得是補碼。
如下圖所示07:
A:^異或位運算符的特殊用法:
一個資料針對另一個資料位異或兩次,該資料本身不變。應用:可以對資料做一個簡單的加密。
如下圖所示08:
B:面試題:
以後講課過程中,若沒有明确說明資料類型的話,一般預設int類型。
a:請實作兩個int變量的交換。int a = 10; int b = 20;
法一:采用第三方變量(開發中用)。
int c = a;
a = b;
b = c;
法二:用位異或運算符(面試中用)。簡記為:等号左邊a,b,a 等号右邊a^b
a = a ^ b;
b = a ^ b; //a ^ b ^ b = a = b
a = a ^ b; //a ^ b ^ a = b = a
法三:用變量相加的方法。
a = a + b;
b = a - b; //a + b - b = a = b
a = a - b; //a + b - a = b = a
法四:一句話搞定。
b = (a + b) - (a = b); //b = a + b - b = a
b:請用最有效率的方式計算出2乘以8的結果
2<<3
如下圖所示09/10:
單目運算符:~3
雙目運算符:3 + 4
A:三目運算符格式:
比較表達式? 表達式1 : 表達式2;
B:執行流程:
首先計算比較表達式的值,看是true還是false。
如果是true,表達式1就是結果。
如果是false,表達式2就是結果。
C:案例:
a:擷取兩個資料中的最大值。
int max = ((x > y)? x : y);
b:擷取三個資料中的最大值。
法一: int tmpe = ((a > b)? a : b);
int max = ((tmpe > c)? tmpe : c);
法二: int max = (a > b)? ((a > c)? a : c) : ((b > c)? b : c); //三目運算符的嵌套使用。
c:比較兩個資料是否相等。
法一: boolean flag = ((a == b)? true : flase); //這樣寫太啰嗦了。
法二: boolean flag = (a == b);
如下圖所示11:
-----------------------------------------------------------------------------
(1)實際開發中,資料是變化的,為了提高程式的靈活性,我們加入鍵盤錄入資料。
(2)如何實作鍵盤錄入資料呢?目前就記住:
A:導包:
import java.util.Scanner;
位置:在class定義的上邊。
B:建立鍵盤錄入對象:
Scanner sc = new Scanner(System.in);
C:通過對象擷取資料:
int x = sc.nextInt();
(3)把三元運算符的案例加入鍵盤錄入改進。
(1)順序結構:從上往下,依次執行。
(2)選擇結構:按照不同的選擇,執行不同的代碼。
(3)循環結構:做一些重複的代碼。
選擇結構也稱為分支結構。Java語言提供了兩種選擇結構語句。
1)if語句。
2)switch語句。
A:格式1:
if(比較/關系表達式) {
語句體;
}
執行流程:
判斷比較表達式的值,看是true還是false。
如果是true,就執行語句體。
如果是false,就不執行語句體。
---------------------------------------
B:格式2
if(比較表達式) {
語句體1;
}else {
語句體2;
}
如果是true,就執行語句體1。
如果是false,就執行語句體2。
if語句的第二種格式與三元運算符的差別如下圖所示12:
---------------------------------------
C:格式3
if(比較表達式1) {
}else if(比較表達式2) {
}else if(比較表達式3) {
語句體3;
}...
...
}else if(比較表達式n) {
語句體n;
else {
語句體n+1;
判斷比較表達式1的值,看是true還是false。
如果是false,就繼續判斷比較表達式2的值,看是true還是false。
如果是true,就執行語句體2。
如果是false,就繼續判斷比較表達式3的值,看是true還是false。
如果都不滿足,就執行語句體n+1。
A:比較表達式無論是簡單還是複雜,結果必須是boolean類型。
B:if語句控制的語句體如果是一條語句,是可以省略大括号的;如果是多條語句,則不能省略。
建議:永遠不要省略。
C:一般來說:有左大括号就沒有分号,有分号就沒有左大括号。
如下圖所示13:
D:else後面如果沒有if,是不會出現比較表達式的。
E:三種格式的if語句其實都是一個語句,隻要有一個語句體執行,其他的語句體就不再執行。
A:比較兩個數是否相等。
B:擷取兩個數中的最大值。
C:擷取三個數中的最大值(if語句的嵌套)。
D:根據成績輸出對應的等級。
E:根據月份,輸出對應的季節。
F:根據x計算對應y的值并輸出。
如下圖所示14:
(4)三元運算符和if語句第二種格式的關系:
所有的三元運算符能夠實作的,if語句的第二種格式都能實作。
反之不成立。
如果if語句第二種格式控制的語句體是輸出語句,就不可以。
因為三元運算符是一個運算符,必須要求有一個結果傳回。不能是一個輸出語句。
我的GitHub位址:
https://github.com/heizemingjun我的部落格園位址:
http://www.cnblogs.com/chenmingjun我的螞蟻筆記部落格位址:
http://blog.leanote.com/chenmingjunCopyright ©2018 黑澤明軍
【轉載文章務必保留出處和署名,謝謝!】