java_day06

来源:https://www.cnblogs.com/onlyxue/archive/2022/10/04/16754133.html
-Advertisement-
Play Games

本篇總結學習 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]);
        }
    }
}

image-20221004163331054

要註意在命令行執行 且需要註意執行時路徑問題

可變參數

  • 在方法聲明中,在指定參數類型後加一個省略好(...)
  • 一個方法只能指定一個可變參數,必須時方法的最後一個參數,任何普通的參數必須在啊它之前聲明
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);
            }
        }
    }
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:創建一個新的工程,項目初始化 npm init -y 二:搭建項目框架 三:編寫main.js文件內容,在index.js中引入,在把index.js引入到index.html中 例: export default()=>{ function computer(){ let h2=documen ...
  • 一、使用webpack優化前端性能方法 ⽤webpack優化前端性能是指優化webpack的輸出結果,讓打包的最終結果在瀏覽器運⾏快速⾼效。 可通過webpack優化前端的手段: 代碼壓縮(刪除多餘的代碼、註釋、簡化代碼的寫法等等⽅式) HTML文件代碼壓縮 使用HTMLWebpackPlugin插 ...
  • 內部類的基本使用 內部類概念 在一個類中定義一個類。舉例:在一個類A的內部定義一個類B,類B就被稱為內部類 我們把一個類放在另一個類的內部定義,稱為內部類(inner class)。 內部類的兩個要點: 內部類提供了更好的封裝。只能讓外部類直接訪問,不允許同一個包中的其他類直接訪問。 內部類可以直接 ...
  • 一、遞歸與迴圈的對比 遞歸會帶來大量的函數調用。這是不好的 在計算環節特別大的前提下,遞歸就是不好的,因為遞歸是先調用,再計算。 在大量計算的前提下可能會造成棧溢出(StackOverFlow) 如下圖: 迴圈是先計算再調用,計算完後會調用的方法會從棧中抹去,最後將結果輸出 能不用遞歸就不用遞歸 小 ...
  • 項目地址: GitHub - apache/skywalking-swck: Apache SkyWalking Cloud on Kubernetes 項目簡介: A bridge project between Apache SkyWalking and Kubernetes. SWCK is ...
  • 變數: 什麼是變數?一個可以存儲數據(存儲的地方在記憶體中),並可以在代碼的運行中,給與數據的改變 註意:變數的聲明必須在最前面 語法:數據類型 變數名稱 = 值; 案例: %d - 輸出一個整數 %.2f - 輸出一個小數(2代表的是小數位,可以改變) %c - 輸出一個字元 %s - 輸出一個字元 ...
  • 一、Auth 模塊是什麼 Auth 模塊是Django中自帶的用戶認證模塊。 一個網站系統需要實現用戶註冊、用戶登錄、用戶認證、註銷、修改密碼等功能,Django中內置了強大的認證系統-auth,預設使用 auth_user 表來存儲用戶的數據。 同時Django有一個後臺管理系統(127.0.0. ...
  • 在jdk8之後,java就能夠通過default和static修飾,直接編寫方法體,無需子類去實現。當我們直接在介面類中編寫帶方法體的方法時,idea就會提示介面抽象方法不能有方法體。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...