本篇總結學習 C++ 時常用的幾個網站,點擊會跳轉到相應網頁。 一、CPP 基礎知識參考鏈接 1. C++ 參考手冊 鏈接(英文):https://en.cppreference.com/ 鏈接(中文):https://zh.cppreference.com/ 2. CPlusPlus 鏈接:htt ...
Java流程式控制制
迴圈結構
-
增強for迴圈
- Java5引入了一種主要用於數組或集合的增強型for迴圈
- 增強型for迴圈格式如下:
- for(聲明語句 : 表達式){ //代碼 }
- 聲明語句:聲明局部變數,此變數類型必須要與數組元素類型匹配
- 表達式:要訪問的數組名或者返回數組的方法
- 主要用來遍曆數組和集合
-
break
-
break在任何迴圈語句的主體部分都可以控制流程,用於強制退出迴圈,不執行迴圈中brake下麵的語句,也在switch中使用因為穿透效應的存在
public class BreakDemo1 { public static void main(String[] args) { int i = 0; while(true){ i = i +1; System.out.println(i); if(i==50){ break;//跳出迴圈 } } //break跳出迴圈後,迴圈外的語言正常執行 對於switch也是如此 System.out.println("謝謝了break兄弟,要不然什麼時候才能執行到我"); } }
-
-
continue
-
continue語句用在迴圈語句中,用於終止某次迴圈緩存,即跳過迴圈體中還未執行的語句,去進行下一次是否執行迴圈的判定
public class ContinueDemo1 { public static void main(String[] args) { int i = 0; while (i<100){ i = i+1; if (i%10==0){ System.out.println(); continue; //遇到continue 程式回到while(i<100)地方繼續執行 } System.out.print(i+" "); } } }
-
如果有兩層迴圈continue在內迴圈中 猜猜會怎麼樣
練習題
列印正方形和三角形
public class PracticeDemo1 {
public static void main(String[] args) {
//列印6*6正方形
for (int i = 1; i <= 6; i++) {
System.out.print("\t\t");
for (int j = 1; j <= 6; j++) {
System.out.print("*"+" ");
}
System.out.println();
}
System.out.println("\n"+"++++++++++++++++++++++++++++++++++++++++"+"\n");
//列印三角形6行
for (int i = 1; i <= 5; i++) {
System.out.print("\t"); //加了製表符讓整個位置靠右一些
for (int j = 5; j >= i; j--) {
System.out.print(" "); //左下倒三角
}
for (int k = 1;k <= i; k++){
System.out.print(" *"); //左正三角
}
for (int l = 1;l < i; l++){
System.out.print(" *"); //右正三角
}
System.out.println();
}
}
}
Java方法
什麼是方法
-
Java方法是語句的集合,它們在一起執行一個功能
- 方法是解決一類問題的步驟的有序組合
- 方法包含於類或對象中
- 方法在程式中被創建,在其他地方被引用
-
設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。設計方法的時候最好保持方法的原子性,即一個方法只完成一個功能,這樣有利於後期的拓展
public class Demo1 { //main方法 public static void main(String[] args) { int sum = add(1,2); //直接調用add方法 無須新建Demo1類型 Demo1 d = new Demo1() 然後d.add()調用 System.out.println(sum); } //加法 //增加關鍵字static可以在類中直接調用本方法 public static int add(int a,int b){ return a+b; } }
方法的定義
- Java的方法類似其他語言的函數,是一段用來完成特定功能的代碼片段。一個方法的語法如下:
- 方法包含一個方法頭和一個方法體
- 修飾符:這是可選的,定義此方法的訪問類型
- 返回值類型:有些方法需要返回值,返回值類型規定了方法返回值的數據類型 不需要返回值 關鍵字就為void
- 方法名:方法的實際名稱。方法名和參數表共同構成方法簽名。記得駝峰原則如runMan()
- 參數類型:參數像占位符,聲明瞭傳入方法變數的類型和數量 聲明是形參 實際傳入的變數是實參
- 方法體:包含具體的語句,定義該方法的功能
- 方法包含一個方法頭和一個方法體
方法的調用
- 調用方法:對象名.方法名(實參列表)
- Java支持兩種調用方法的方式,根據方法是否包含返回值來選擇
- 當方法返回一個值時,方法調用通常被當作一個值:int a = max(10,20);
- 返回值為void,當作一條語句處理:System.out.print(max());
- Java的值傳遞以及Java不具有的引用傳遞
- 值傳遞:是指在調用函數時,將實參複製一份到函數中,這樣函數對參數如何更改都不會應該實際參數
- 引用傳遞:在調用函數時,將實參的地址傳遞到函數中,這樣的話函數對參數修改,實參也會被影響
public class Demo2 {
public static void main(String[] args) {
double d = new Demo2().max(34.9,67);
System.out.println(d);
}
//比大小
public double max(double a,double b){
double res = 0.0;
// if (a>b){
// res = a;
// }else if(a<b){
// res = b;
// }else {
// System.out.println("數字相等");
// }
if (a==b){
System.out.println("兩個數相等");
return 0;
}
if (a>b){
res = a;
}else {
res = b;
}
return res;
}
}
方法的重載
- 重載就是在一個類中,有相同的函數名稱,但是形參不同包括類型不同或者數量不同的函數
- 方法重載的規則
- 方法名必須相同
- 參數列表必須不同(個數不同、類型不同或者排列順序不同)
- 方法的返回值可同可不同
- 僅僅返回類型不同不能叫作重載
- 實現理論:
- 方法名稱相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個匹配,以選擇對應的方法,若匹配失敗則編譯器報錯
public class Demo3 {
public static void main(String[] args) {
add(3,5); //根據實參類型選擇方法
add(3.5,4.5);
}
public static int add(int a,int b){
return a+b;
}
public static double add(double a,double b){
return a+b;
}
}
命令行傳參
- 有時候需要運行一個程式在傳遞消息,就需要傳遞給main()方法實現
public class Demo4 {
public static void main(String[] args) {
//
for (int i = 0; i < args.length; i++) {
System.out.println("args["+i+"]:"+args[i]);
}
}
}
要註意在命令行執行 且需要註意執行時路徑問題
可變參數
- 在方法聲明中,在指定參數類型後加一個省略好(...)
- 一個方法只能指定一個可變參數,必須時方法的最後一個參數,任何普通的參數必須在啊它之前聲明
public class Demo5 {
public static void main(String[] args) {
Demo5 demo5 = new Demo5();
// demo5.test(1,45,213);
printMax(34.4,56.8,23432);
}
public void test(int...i){
System.out.println(i[0]);
}
public static void printMax(double... numbers){
if(numbers.length==0){
System.out.println("沒有數字可以比較");
return;
}
double res = numbers[0];
for (int i = 1; i < numbers.length ; i++) {
if(res < numbers[i]){
res = numbers[i];
}
}
System.out.println("最大數是:" + res);
}
}
可以發現可變參數實質上就是一個數組
遞歸
-
遞歸就是A方法調用A方法,自己調用自己
-
利用遞歸可以用簡單的程式來解決一些複雜的問題,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程式就可以描述出解題過程所需要的多次重覆計算,大大減少了程式的代碼量。遞歸的能力在於用有限的語句來定義對象的無線集合
-
遞歸結果包括兩個部分
- 遞歸頭部:規定了什麼時候不調用自身方法。如果沒有頭部,將會陷入死迴圈
- 遞歸體:什麼時候需要調用自身方法
public class Demo6 { public static void main(String[] args) { System.out.println(fn(5)); } public static int fn(int n){ if (n == 1){ return 1; }else { return n*fn(n-1); } } }