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中我們想要開 ...
  • 歡迎ReaLTaiizor是一個用戶友好的、以設計為中心的.NET WinForms項目控制項庫,包含廣泛的組件。您可以使用不同的主題選項對項目進行個性化設置,並自定義用戶控制項,以使您的應用程式更加專業。 項目地址:https://github.com/Taiizor/ReaLTaiizor 步驟1: ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • Channel 是乾什麼的 The System.Threading.Channels namespace provides a set of synchronization data structures for passing data between producers and consume ...
  • efcore如何優雅的實現按年分庫按月分表 介紹 本文ShardinfCore版本 本期主角: ShardingCore 一款ef-core下高性能、輕量級針對分表分庫讀寫分離的解決方案,具有零依賴、零學習成本、零業務代碼入侵適配 距離上次發文.net相關的已經有很久了,期間一直在從事java相關的 ...
  • 前言 Spacesniffer 是一個免費的文件掃描工具,通過使用樹狀圖可視化佈局,可以立即瞭解大文件夾的位置,幫助用戶處理找到這些文件夾 當前系統C盤空間 清理後系統C盤空間 下載 Spacesniffer 下載地址:https://spacesniffer.en.softonic.com/dow ...
  • EDP是一套集組織架構,許可權框架【功能許可權,操作許可權,數據訪問許可權,WebApi許可權】,自動化日誌,動態Interface,WebApi管理等基礎功能於一體的,基於.net的企業應用開發框架。通過友好的編碼方式實現數據行、列許可權的管控。 ...
  • 一、ReZero簡介 ReZero是一款.NET中間件 : 全網唯一開源界面操作就能生成API , 可以集成到任何.NET6+ API項目,無破壞性,也可讓非.NET用戶使用exe文件 免費開源:MIT最寬鬆協議 , 一直從事開源事業十年,一直堅持開源 1.1 純ReZero開發 適合.Net Co ...
  • 一:背景 1. 講故事 停了一個月沒有更新文章了,主要是忙於寫 C#內功修煉系列的PPT,現在基本上接近尾聲,可以回頭繼續更新這段時間分析dump的一些事故報告,有朋友微信上找到我,說他們的系統出現了大量的http超時,程式不響應處理了,讓我幫忙看下怎麼回事,dump也抓到了。 二:WinDbg分析 ...
  • 開始做項目管理了(本人3年java,來到這邊之後真沒想到...),天天開會溝通整理需求,他們講話的時候忙裡偷閑整理一下常用的方法,其實語言還是有共通性的,基本上看到方法名就大概能猜出來用法。出去打水的時候看到外面太陽好好,真想在外面坐著曬太陽,回來的時候好兄弟三年前送給我的鍵盤D鍵不靈了,在打"等待 ...