小楊初學Java的筆記06
day06
一、迴圈巢狀
以九九乘法表為例
for (int i = 1; i <= 9; i++) { //第一個迴圈控制的是行
for (int j = 1; j <= i; j++) { //第二個迴圈控制的時列
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
****輸出從1*1到9*9的乘法表****
二、控制語句
break,continue,return
1、出現原因
Java中的goto是保留字,目前不能使用,雖然沒有goto語句可以增強程式的安全性,但是也帶來很多不便
比如說,想在某個迴圈知道到某一步的時候就結束,現在就做不了這件事情,為了彌補這個缺陷
Java就提供了break,continue和return來實現控制語句的跳轉和中斷
break,continue,return 它們都是關鍵字
2、break
1)、break的使用場景
switch語句和迴圈語句
根據單獨使用的時候報錯資訊可以得出,break語句是適用於switch語句和迴圈語句中
1、在switch語句中使用
2、在迴圈語句中使用
3、單獨在if語句中不能使用
2)、break的意義
結束這個迴圈(以九九乘法表為例)
for (int i = 1; i <= 9; i++) {
for (int j = 1; j <= i; j++) {
System.out.print(j + "*" + i + "=" + (i * j) + "\t");
}
System.out.println();
if(i==3){
break; //i=3時結束for的外層迴圈,若在內層迴圈中使用,則結束的是內層迴圈
}
}
****輸出九九乘法表的前三行****
3)、帶標籤的break
單層跳出:在當前for迴圈中使用break,只結束當前for迴圈
多層跳出:帶標籤的break,格式:標籤名 : 迴圈語句(開發中如果沒有特殊需求,一般不會去使用)
舉例:九九乘法表在內迴圈j是4的時候,break
xiaomiyang : for(int i=1;i<=9;i++){ //外層控制行
xiaocai : for(int j=1;j<=i;j++){ //內層控制列
System.out.print(j+"*"+i+"="+(i*j)+"\t");
if(j==4){
break xiaoyang; //結束當前迴圈,結束外層迴圈,換成xioacai則是結束內層迴圈
}
}
System.out.println();
}
****輸出九九乘法表的前四列****
2、continue
1)、continue使用場景
單獨使用會報錯,根據報錯資訊可以發現,continue只能在迴圈中使用
2)、continue的意義
結束這一次迴圈
for(int i=1;i<=10;i++){
if(i==3){
continue; //結束i=3這一次迴圈,然後繼續i=4的迴圈
}
System.out.println(i);
}
****輸出結果為1 2 4 5 6 ... 9 10****
3、return
1)、return的使用場景
可以在任何地方中執行
2)、return的意義
結束這個方法,return後面的內容不在執行(結束自return開始往上最近的一個方法)
在main方法中使用,就相當於結束了main方法,也就是結束當前java程式
for(int i=1;i<=10;i++){
if(i==3){
return; //當i=3時,結束自return開始往上最近的一個方法)
}
System.out.println(i);
}
****for迴圈輸出為1 2,要根據上下程式碼確定最終結果****
三、方法
1、概念
簡單的說:方法就是完成特定功能的程式碼塊,在很多語言(譬如C語言)裡面都有函式的定義
函式在Java中被稱為方法
2、格式:
修飾符 返回值型別 方法名(引數型別 引數名1,引數型別 引數名2…) {
函式體;
return 返回值;
}
名詞解釋:
1)、修飾符
修飾符比較多,但是目前只需要記住一個組合public static
後面面向物件的時候,會詳細介紹有哪些修飾符,以及使用方法
2)、返回值型別
定義return返回值的資料型別。
3)、方法名
給這個方法起個名字(符合識別符號的命名規則,單個單詞小寫,多個單詞第一個小寫,後面單詞首字母大寫)
4)、引數
a、形參
定義在方法上面的引數名
b、實參
將來實際呼叫方法傳入的值,叫實參
c、引數型別
限定將來呼叫方法需要傳入引數的資料型別
4)、引數名(形參)
是一個變數,用於接收將來呼叫方法傳入的引數,名字見名之意
5)、函式體
完成方法功能的程式碼,實現主要的方法邏輯
6)、return:
一般情況下,有返回值的方法,才會有return,return的作用是將計算好的
結果返回給呼叫者,返回的型別是與方法定義的返回值型別一致
7)、返回值:
程式被return帶回的結果,返回給呼叫者
3、分類
1)、有返回值的方法、沒有返回指定的方法
2)、有返回值的方法
有返回值的方法呼叫的時候,有兩種處理方式
a、定義一個變數,資料型別與方法返回的資料型別一致,
接收方法返回的值(推薦)
b、直接使用
3)、沒有明確返回值的方法
沒有返回值的時候,方法上定義的返回值型別為void
void表示該方法,沒有任何返回值
4)、注意
a、即使我們的方法沒有寫返回值型別,也是需要呼叫才能執行
b、沒有明確返回值型別的方法,是可以單獨呼叫的
4、方法過載
在同一個類中,方法名一樣,引數列表不一樣,這樣的現象稱之為方法的過載
Java程式碼執行方法呼叫時會自動匹配符合要求的那個方法
其中方法的過載與返回值型別無關
5、舉例
1)、有返回值舉例
需求,計算兩個int型別的數之和
public static void main(String[] args) {
int a = 10;
int b = 20;
int res = sum(a,b);
System.out.println(res); //也可以這樣輸出System.out.println(sum(a,b));
}
public static int sum ( int x1, int x2){
return x1 + x2;
}
****輸出結果為a+b的和,30****
****上面的方法也可以寫成下面的形式****
**** public static int sum(int x1,int x2){ ****
**** int result = x1+x2; ****
**** return result; ****
**** } ****
2)、沒有返回值舉例
寫一個沒有返回值的吃飯的程式
public static void main(String[] args) {
eat();
}
public static void eat(){ //定義一個方法表示吃飯
System.out.println("吃飯");
}
****輸出結果:吃飯****
3)、過載舉例
寫一個能體現Java方法過載的求和方法,並呼叫執行
public static void main(String[] args) {
int a = 10;
int b = 20;
int c = 30;
int res1 = sum(a,b);
System.out.println(res1);
int res2 = sum(a,b,c);
System.out.println(res2);
}
public static int sum ( int x1, int x2){
return x1 + x2;
}
public static int sum ( int x1, int x2,int x3){ //定義一個同名但功能不同的兩個方法
return x1 + x2 + x3;
}
****輸出中res1=30,res2=60****
6、注意事項
1)、方法不呼叫不執行
2)、方法與方法是平級的,不能巢狀定義,但是可以巢狀使用
3)、方法定義時引數之間用英文逗號隔開
4)、方法呼叫的時候不用再傳遞資料型別,只需要傳遞資料
5)、如果方法有返回值,一定要有return帶回一個返回值,不然會報錯
四、附加
報錯修改快捷鍵:將滑鼠游標移動至報錯的橫線上,按下alt+enter
明天繼續