三目表達式:
“三目條件表達式”,語法格式:
- x ? y : z
其中 x 爲 boolean 類型表達式,先計算 x 的值,若爲true,則整個三目運算的結果爲表達式 y 的值,否則整個運算結果爲表達式 z 的值。
舉例:
- int score = 80; int x = -100;
- String type = score < 60 ? "不及格" : "及格";
- int flag = x > 0 ? 1 : (x == 0 ? 0 : -1);
- System.out.println("type= " + type);
- System.out.println("flag= "+ flag);
結果:
- type= 及格 flag= -1
控制語句:
條件語句 - 根據不同條件,執行不同語句。
- if
- if .. else
- if .. else if
- if .. else if .. else if .. else
- switch
循環語句 – 重複執行某些動作
- for (JDK1.5語法)
- while
- do .. while;
分支語句IF
- if
- if .. else ..
- if .. else if ..
- if .. else if .. else if ..
- if .. else if .. else if .. else
- 只有一句需要執行的語句時,可以省略 { },但是不推薦省略
- 小心不要在if後面加 ;
分支語句switch
- switch() {
- case xx : ….
- case xx : ….
- default: ….
- }
- 小心case穿透,推薦使用break語句 多個case可以合併到一起
- default可以省略,但不推薦省略
- Switch的值類型是:byte short int String 枚舉 char
需求練習:
- 做練習:
- 電腦輸入自己的:名字,性別,出生年,身高,體重。
- 返回電腦自動返回:
- 庫裏 男 1988年出生,今年27 身高:191.1cm 體重:83.9kg
- 您的體重完整正常or偏重注意瘦身or注意加強營養。
- 男性:身高(釐米)-105= 標準體重(千克),
- 女性:身高(釐米)-100= 標準體重(千克)
While循環 & do while 循環
- while 語句爲如下形式:
- while(邏輯表達式){ 語句; … ; }
- 執行過程: 先判斷邏輯表達式的值。
- 若=true.則執行其後面的語句,然後再次判斷條件並反覆執行,直到條件不成立爲止
示意圖:
do while
- do while 語句爲如下形式:
- do { 語句; … ; } while(邏輯表達式);
- 執行過程:先執行語句,再判斷邏輯表達式的值,若爲true,再執行語句,否則結束循環。
示意圖
for 循環語句
- for 語句爲如下形式:
- for(表達式1; 表達式2; 表達式3){ 語句; … ; }
- 執行過程 首先計算表達式1,接着執行表達式2,若表達式2的值 = ture,則執行語句,接着計算表達式3,再判斷表達式2的值;
- 依此重複下去,直到表達式2的值=false
- for語句中三個表達式都可以省略 JDK1.5新補充的for語法(後面課程中補充,數組)
練習:
課 堂 練 習 編寫程序,用一個 for 循環計算1+3+5+7 + ……+ 99的值,並輸出計算結果。(OddSum.java)
/**
* 100以內的奇數和
*/
public class OddSum{
public static void main(String[] args){
int sum = 0;
//for循環
for(int i=1;i<=100;i+=2){
System.out.println("當前的數字是:"+i);
sum +=i;
}
System.out.println("總和是:"+sum);
}
}
break & Continue 語句
break 語句用於終止某個語句塊的執行。用在循環語句體中,可以強行退出循環;例如:
public class Test {
public static void main(String args[]) {
int stop = 4;
for (int i = 1; i <= 10; i++) {
//當i等於stop時,退出循環
if (i == stop) break;
System.out.println(" i= " + i);
}
}
}
continue 語句用在循環語句體中,用於終止某次循環過程,跳過循環體中 continue 語句下面未執行的循環,開始下一次循環過程;例如:
public class Test {
public static void main(String args[]) {
int skip = 4;
for (int i = 1; i <= 5; i++) {
//當i等於skip時,跳過當次循環
if (i == skip) continue;
System.out.println("i = " + i);
}
}
}
循環代碼練習:
- 輸出1~100內前5個可以被3整除的數。
// 輸出1~100內前5個可以被3整除的數。
public class Test {
public static void main(String args[]){
int num = 0, i = 1;
while (i <= 100) {
if (i % 3 == 0) {
System.out.print(i + " ");
num++;
}
if (num == 5) {
break;
}
i++;
}
}
}
- 輸出101~200內的質數,
//輸出101~200內的質數,
public class Test {
public static void main(String args[]) {
for (int i=101; i<200; i+=2) {
boolean f = true;
for (int j = 2; j < i; j++) {
if (i % j == 0) {
f = false;
break;
}
}
if (!f) {continue;}
System.out.print(" " + i);
}
}
}
初步瞭解:Java中的方法
- Java的方法類似於其它語言的函數,是一段用來完成特定功能的代碼片段,聲明格式:
- [修飾符1 修飾符2 …] 返回值類型 方法名(形式參數列表){
- Java語句;… … …
- }
- 形式參數:在方法被調用時用於接收外界輸入的數據。
- 實參:調用方法時實際傳給方法的數據。
- 返回值:方法在執行完畢後返還給調用它的環境的數據。
- 返回值類型:事先約定的返回值的數據類型,如無返回值,必須給出返回值類型void。
- Java語言中使用下述形式調用方法:對象名.方法名(實參列表)
- 實參的數目、數據類型和次序必須和所調用方法聲明的形參列表匹配,
- return 語句終止方法的運行並指定要返回的數據。
- Java中進行方法調用中傳遞參數時,遵循值傳遞的原則:
- 基本類型傳遞的是該數據值本身。引用類型傳遞的是對對象的引用,而不是對象本身 。
遞歸調用
遞歸簡單來說呢就是:方法自身調用自身
代碼案例:
打印99乘法表
源碼,補碼,反碼
- 概念:java中用補碼錶示二進制數,補碼的最高位是符號位,最高位爲“0”表示正數,最高位爲“1”表示負數。
- 正數補碼爲其本身;
- 負數補碼爲其絕對值各位取反加1;
- 例如:
- +21,其二進制表示形式是00010101,則其補碼同樣爲00010101
- -21,按照概念其絕對值爲00010101,各位取反爲11101010,再加1爲11101011,即-21的二進制表示形式爲11101011
補充內容
步驟:
- byte爲一字節8位,最高位是符號位,即最大值是01111111,因正數的補碼是其本身,即此正數爲01111111 十進制表示形式爲127
- 最大正數是01111111,那麼最小負是10000000(最大的負數是11111111,即-1)
- 10000000是最小負數的補碼錶示形式,我們把補碼計算步驟倒過來就即可。10000000減1得01111111然後取反10000000 因爲負數的補碼是其絕對值取反,即10000000爲最小負數的絕對值,而10000000的十進制表示是128,所以最小負數是-128
- 由此可以得出byte的取值範圍是-128到+127
- 說明:各個類型取值範圍的計算方法與此大致相同,感興趣的同學可以自己試着計算
補充內容
- 補充(給非計算機專業的同學掃下盲):
- 在計算機內,定點數有3種表示法:原碼、反碼和補碼
- [原碼]就是二進制定點表示法,即最高位爲符號位,“0”表示正,“1”表示負,其餘位表示數值的大小。
- [反碼]表示法規定:正數的反碼與其原碼相同;負數的反碼是對其原碼逐位取反,但符號位除外。
- [補碼]表示法規定:正數的補碼與其原碼相同;負數的補碼是在其反碼的末位加1。