算術運算符
關于求余
不管分子,分母是正還是負,對于分母,直接取正;對于分子若有負號,則先提取出來;剩下兩個正的分子分母運算;最后,若剛才的分子有負號,對最后的結果添加負號。
做除法和取模時,右操作數不能為0
% 不僅可以對整型取模,也可以對double類型取模
自增/自減運算符 ++ – 一個特例
關系運算符
其計算結果是 true 或者 false
true<5,表達方式不正確;正確的寫法如下:
邏輯運算符
短路求值
我們都知道, 計算 10 / 0 會導致程序拋出異常. 但是上面的代碼卻能正常運行, 說明 10 / 0 并沒有真正被求值.
對于 &&, 如果左側表達式值為 false, 則表達式結果一定是 false, 無需計算右側表達式.
對于 ||, 如果左側表達式值為 true,則表達式結果一定是 true, 無需計算右側表達式.& 和 | 如果表達式結果為 boolean 時, 也表示邏輯運算. 但與 && || 相比, 它們不支持短路求值.少用
位運算符 & | ~ ^
位操作表示 按二進制位運算
按位異或 ^: 如果兩個數字的二進制位相同, 則結果為 0, 相異則結果為1,可用于標記不同點
移位運算
左移 <<: 最左側位不要了, 最右側補 0.右移 >>: 最右側位不要了, 最左側補符號位(正數補0, 負數補1)
無符號右移 >>>: 最右側位不要了, 最左側補 0. 左移 1 位, 相當于原數字 * 2;右移 1 位, 相當于原數字 / 2
條件運算符
表達式1 ? 表達式2 : 表達式3
當 表達式1 的值為 true 時, 整個表達式的值為 表達式2 的值;
當 表達式1的值為 false 時, 整個表達式的值為 表達式3 的值.
求兩個數的最大值
表達式2和表達式3的結果要是同類型的,除非能發生類型隱式類型轉換
表達式不能單獨存在,其產生的結果必須要被使用
運算符的優先級
運算符之間是有優先級的. 具體的規則我們不必記憶. 在可能存在歧義的代碼中加上括號即可
邏輯控制
順序結構和分支結構
if語句
if(布爾表達式){
// 語句
}
if(布爾表達式){
// 語句1
}else{
// 語句2
}
if(布爾表達式1){
// 語句1
}else if(布爾表達式2){
// 語句2
}else{
// 語句3
}
int a=34;if(a>0) {System.out.println(a);}if(a>0) {System.out.println("a>0");} else{System.out.println("a<0");}a=0;if(a>0) {System.out.println("a>0");}else if(a==0){System.out.println("a==0");}else{System.out.println("a<0");}
括號內必須為布爾表達式
判斷一個數字是奇數還是偶數
判斷一個年份是否為閏年
分號問題
此處多寫了一個 分號, 導致分號成為了 if 語句的語句體, 而 { } 中的代碼已經成為了和一個 if 無關的代碼塊.
懸垂 else 問題,沒有花括號
上面這兩個都是不對的
負數的補碼是原碼的符號位不變,數值位取反后加1:從1000 0001 到 1111 1111(-1到-127) 最后規定1000 0000為-128
switch 語句
witch的括號內只能是以下類型的表達式:
基本類型:byte、char、short、int,注意不能是long類型
引用類型:String常量串、枚舉類型
正確寫法如下:
break 不要遺漏, 否則會失去 “多分支選擇” 的效果
switch 不能表達復雜的條件
while 循環
while(循環條件:布爾表達式){
循環語句;}
這里的循環條件為布爾表達式
打印 1 - 10 的數字
計算 1 - 100 的和
計算 5 的階乘
計算 1! + 2! + 3! + 4! + 5!
和 if 類似, while 下面的語句可以不寫 { } , 但是不寫的時候只能支持一條語句
和 if 類似, while 后面不要多寫 分號, 否則可能導致循環不能正確執行.
此時 ; 為 while 的語句體(這是一個空語句), 實際的 { } 部分和循環無關. 此時循環條件 num <= 10 恒成立, 導致代碼 死循環了
break語句
找到 100 - 200 中第一個 3 的倍數
continue語句
找到 100 - 200 中所有 3 的倍數
for循環
for(表達式①;布爾表達式②;表達式③){
表達式④;
}
for循環快捷鍵:fori
計算 1 - 100 的和
計算 5 的階乘
計算 1! + 2! + 3! + 4! + 5!
do while語句
一般 do while 很少用到, 更推薦使用 for 和 while.