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
  • 一個自定義WPF窗體的解決方案,借鑒了呂毅老師的WPF製作高性能的透明背景的異形視窗一文,併在此基礎上增加了滑鼠穿透的功能。可以使得透明窗體的滑鼠事件穿透到下層,在下層窗體中響應。 ...
  • 在C#中使用RabbitMQ做個簡單的發送郵件小項目 前言 好久沒有做項目了,這次做一個發送郵件的小項目。發郵件是一個比較耗時的操作,之前在我的個人博客裡面回覆評論和友鏈申請是會通過發送郵件來通知對方的,不過當時只是簡單的進行了非同步操作。 那麼這次來使用RabbitMQ去統一發送郵件,我的想法是通過 ...
  • 當你使用Edge等瀏覽器或系統軟體播放媒體時,Windows控制中心就會出現相應的媒體信息以及控制播放的功能,如圖。 SMTC (SystemMediaTransportControls) 是一個Windows App SDK (舊為UWP) 中提供的一個API,用於與系統媒體交互。接入SMTC的好 ...
  • 最近在微軟商店,官方上架了新款Win11風格的WPF版UI框架【WPF Gallery Preview 1.0.0.0】,這款應用引入了前沿的Fluent Design UI設計,為用戶帶來全新的視覺體驗。 ...
  • 1.簡單使用實例 1.1 添加log4net.dll的引用。 在NuGet程式包中搜索log4net並添加,此次我所用版本為2.0.17。如下圖: 1.2 添加配置文件 右鍵項目,添加新建項,搜索選擇應用程式配置文件,命名為log4net.config,步驟如下圖: 1.2.1 log4net.co ...
  • 之前也分享過 Swashbuckle.AspNetCore 的使用,不過版本比較老了,本次演示用的示例版本為 .net core 8.0,從安裝使用開始,到根據命名空間分組顯示,十分的有用 ...
  • 在 Visual Studio 中,至少可以創建三種不同類型的類庫: 類庫(.NET Framework) 類庫(.NET 標準) 類庫 (.NET Core) 雖然第一種是我們多年來一直在使用的,但一直感到困惑的一個主要問題是何時使用 .NET Standard 和 .NET Core 類庫類型。 ...
  • WPF的按鈕提供了Template模板,可以通過修改Template模板中的內容對按鈕的樣式進行自定義。結合資源字典,可以將自定義資源在xaml視窗、自定義控制項或者整個App當中調用 ...
  • 實現了一個支持長短按得按鈕組件,單擊可以觸發Click事件,長按可以觸發LongPressed事件,長按鬆開時觸發LongClick事件。還可以和自定義外觀相結合,實現自定義的按鈕外形。 ...
  • 一、WTM是什麼 WalkingTec.Mvvm框架(簡稱WTM)最早開發與2013年,基於Asp.net MVC3 和 最早的Entity Framework, 當初主要是為瞭解決公司內部開發效率低,代碼風格不統一的問題。2017年9月,將代碼移植到了.Net Core上,併進行了深度優化和重構, ...