day07-

来源:https://www.cnblogs.com/liyuelian/archive/2022/07/26/16522635.html
-Advertisement-
Play Games

Java方法01 1.什麼是方法? Java是語句的集合,它們在一起執行一個功能 方法是解決一類問題的步驟的有序集合 方法包含於類或者對象中 方法在程式中被創建,在其他地方被引用 設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的==原子性,就是一 ...


Java方法01

1.什麼是方法?

  • Java是語句的集合,它們在一起執行一個功能

    • 方法是解決一類問題的步驟的有序集合

    • 方法包含於類或者對象中

    • 方法在程式中被創建,在其他地方被引用

  • 設計方法的原則:方法的本意是功能塊,就是實現某個功能的語句塊的集合。我們設計方法的時候,最好保持方法的原子性,就是一個方法只完成一個功能,這樣利於我們後期拓展。

  • 方法的命名規則:首字母小寫和駝峰原則:除了第一個單詞外,之後的單詞首字母大寫

2.方法的定義和調用

2.1方法的定義

  • Java的方法類似其他語言的函數,是一段用來完成特定功能的代碼片段。一般情況下,定義一個方法包括以下語法:

    • 方法包含一個方法頭和一個方法體。下麵是一個方法的所有部分:

      • 修飾符:修飾符,這是可選的,告訴編譯器如何調用該方法。定義了該方法的訪問類型。
      • 返回值類型:方法可能會返回值,returnValueType是方法返回值的數據類型。有些方法執行所需操作,但沒有返回值, 這種情況下returnValueType是關鍵字void
      • 方法名:是方法的實際名稱,方法名和參數表共同構成方法簽名。
      • 參數類型:參數像是一個占位符,當方法被調用時,傳遞值給參數。這個值被稱為實參或者變數。參數列表是指方法的參數類型、順序和參數的個數。參數是可選的,方法也可以不包含任何參數。
        • 形式參數:在方法被調用時用於接收外界輸入的數據。
        • 實參:調用方法時實際傳給方法的數據。
      • 方法體:方法體包含具體的語句,定義該方法的功能。

語法:

   修飾符 返回值類型 方法名(參數類型 參數名){
       ...
       方法體
       ...
       return 返回值;
   }

例子:

```java
package li.bolog.method;

public class Demo02 {
    public static void main(String[] args) {
        int max=max(20,20);
        System.out.println(max);

    }

    //比大小
    public static int max(int num1,int num2){
        int result=0;
        if(num1==num2){
            return 0;   //return 除了可以返回值以外還可以終止方法
        }
        if (num1>num2) {
            result=num1;
        } else{
            result=num2;
        }
        return  result;
    }
}
```
image-20220726153652178

2.3方法調用

  • 調用方法:對象名.方法名(實參列表)

  • Java支持兩種調用方法的方式,根據方法是否返回值來選擇

  • 當方法返回一個值的時候,方法調用通常被當成一個值。例如:

    int largr = max(30,40);

  • 如果方法返回值是void,那麼方法調用一定是一條語句。

    System.out.println("Hello");

  • 拓展瞭解:值傳遞 和 引用傳遞(PS:Java都是值傳遞)

為什麼說java裡面只有值傳遞?_Forward233的博客-CSDN博客

3.方法的重載

  • 重載就是在一個類中,有相同的函數名稱,但形參不同的函數

  • 方法的重載規則:

    • 方法名稱必須相同
    • 參數列表可以不同(個數不同、類型不同、參數排列順序不同等)
    • 方法的返回類型可以相同也可以不相同
    • 僅僅返回類型不同不足以成為方法的重載
  • 實現理論:方法名稱相同時,編譯器會根據調用方法的參數個數、參數類型等去逐個匹配,以選擇對應的方法,如果匹配失敗則編譯器報錯。

    重寫:重寫是垂直關係,是子類和父類之間的關係

    重載:重載是水平關係,是同一個類中方法之間的關係

package li.bolog.method;

public class Demo01 {
    
    public static void main(String[] args) {
       int sum= add(1,2);
       int sum2=add(2,3,4);
        System.out.println(sum);
        System.out.println(sum2);
        
    }

    //加法
    public static int add(int a,int b){
        return a+b;
    }

    public static int add(int a,int b,int c){
        return a+b+c;
    }

}
image-20220726171336405

4.命令行傳參

有時你希望運行一個程式時再給它傳遞消息。這就要靠傳遞命令行參數給main()函數實現

在IDEA中編寫如下程式:

package li.bolog.method;

public class Demo03 {
    public static void main(String[] args) {
        //args.length 數組長度
        for (int i = 0; i < args.length; i++) {
            System.out.println("args"+"["+i+"]"+args[i]);
        }
    }
}

打開命令視窗,在程式所在的目錄下編譯生成.class文件。然後輸入java命令運行程式,這時候我們可以發現系統提示找不到主類

image-20220726174033651

這時候候應該退回 src/ 目錄下去運行

D:\IDEA-workspace\722practice\src\li\bolog\method> cd ../
D:\IDEA-workspace\722practice\src\li\bolog> cd ../
D:\IDEA-workspace\722practice\src\li> cd ../
D:\IDEA-workspace\722practice\src> java li.bolog.method.Demo03
D:\IDEA-workspace\722practice\src> java li.bolog.method.Demo03 This is me
args[0]This
args[1]is
args[2]me

5.可變參數(不定項參數)

  • 從JDK1.5開始,Java支持傳遞同類型的可變參數給一個方法
  • 在方法聲明中,在指定參數類型後面加一個省略號(…)
  • 一個方法中只能指定一個可變參數,它必須是方法的最後一個參數。任何普通的參數必須在它之前聲明

可變長參數的應用:

package li.bolog.method;

public class Demo04 {
    public static void main(String[] args) {
        printMax(2,9,55,7,8,56.7,-89);
        printMax(new double[]{1,45,7,-9,77});
    }

    public static void printMax(double...numbers){
        if(numbers.length==0){
            System.out.println("No argument passed");
            return;
        }
        double result = numbers[0];
        //排序
        for (int i = 1; i < numbers.length; i++) {
            if(numbers[i]>result){
                result = numbers[i];
            }
        }
        System.out.println("The max value is"+result);
    }
}
image-20220726184558979

6.遞歸

  • A方法調用B方法,我們很容易理解。

    遞歸就是:A方法調用A方法,就是自己調用自己。

  • 利用遞歸可以用簡單程式的程式來解決一些複雜的問題。它通常把一個大型的複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程式就可以描述出解題過程所需要的多次重覆計算,大大減少了程式的代碼量。遞歸的能力在於用有限的語句定義對象的無限集合。

  • 遞歸結構包括兩個部分:

    • 遞歸頭(遞歸邊界):什麼時候不調用自身方法。如果沒有頭,就會陷入死迴圈。
    • 遞歸體:什麼時候需要調用自身方法
package li.bolog.method;

public class Demo05 {
    public static void main(String[] args) {

        System.out.println(f(5));
    }
    //遞歸來解決階乘
    //5!
    public static int f(int n){
        if(n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }
}
image-20220726201527793

7.鞏固練習

寫一個計算器,要求實現加減乘除功能,並且能夠迴圈接收新的數據,通過用戶交互實現。

  • 思路推薦
    • 寫四個方法:加減乘除
    • 利用迴圈+switch進行用戶交互
    • 傳遞需要操作的兩個數
    • 輸出結果
package li.bolog.method;

import java.util.Scanner;

public class CalculatorDemo {
    public static void main(String[] args) {
        /*
       寫一個計算器,要求實現加減乘除功能,並且能夠迴圈接收新的數據,通過用戶交互實現。
        - 思路推薦
            - 寫四個方法:加減乘除
            - 利用迴圈+switch進行用戶交互
            - 傳遞需要操作的兩個數
            - 輸出結果
        * */

        Scanner scanner = new Scanner(System.in);
        
        double a = 0 ;
        double b = 0 ;
        String c =" " ;

        for (int i = 0; i < 999; i++) {
            
            System.out.println("請輸入第一個數:");
            a   =  scanner.nextDouble();
            
            System.out.println("請輸入運算符號:");
            c   =  scanner.next();
            
            System.out.println("請輸入第二個數:");
            b   =  scanner.nextDouble();

            switch(c){
                case "+" :
                    System.out.println("運算結果為:"+a+"+"+b+"="+add(a,b));break;

                case "-" :
                    System.out.println("運算結果為:"+a+"-"+b+"="+subtract(a,b));break;

                case "*" :
                    System.out.println("運算結果為:"+a+"*"+b+"="+multiply(a,b));break;

                case "/" :
                    System.out.println("運算結果為:"+a+"/"+b+"="+divide(a,b));break;

                default:
                    System.out.println("請輸入正確的運算符號!");
            }
        }

        scanner.close();
    }

    //加
    public static double add(double a,double b){return a+b;}

    //減
    public static double subtract(double a,double b){return a-b;}

    //乘
    public static double multiply(double a,double b){return a*b;}

    //除
    public static double divide(double a,double b){
        if(a*b==0) {System.out.println("被除數或者除數不能為0!");return 0;}
        else return a/b;
    }
}
image-20220726205640629
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 微信支付介紹 微信公眾號程式或微信小程式項目中基本都要有微信支付。支付場景基本就是點擊支付,然後手機底部拉起輸入微信支付密碼彈窗,密碼輸入正確後,支付完成。但是無論是微信小程式或微信公眾號程式都是在後端調用微信api介面進行統一下單,將接 ...
  • 需求: el-form 每行顯示兩列,底部按鈕居中 問題: 以前的解決辦法是: el-col, el-row。但是這裡只有一個 el-form-item 的 label 數據是已知的,其餘項都是迴圈得到的,數量不固定,因此不能採用 el-col 方式。 嘗試 嘗試過 item 左浮動,flex,底部 ...
  • 需求 1 :設置初始高亮 子組件: 父組件 需求 2 :高亮行的變化,需要把數據傳遞到兄弟組件中 解決辦法:EventBus 參考鏈接: http://t.csdn.cn/iwOJc main.js 中: 子組件 1 : 子組件 2 : 需求 3 :子組件把高亮行的 index 和表格總條數傳遞給父 ...
  • 從ES6開始增加了Promise類型,稱為了主導性的非同步編程機制。 期約Promise是一個有狀態的對象,可能處於如下三種狀態之一: 待定(pending) 兌現(fulfilled,或被稱為“解決”,resolved) 拒絕(rejected) pending是期約的最初始狀態。在這個狀態下,pr ...
  • 互聯網協議 1.C/S B/S 架構 client 基於網路通信 server browser 基於網路通信 server server端必須滿足的條件: 1. 穩定運行(網路. 硬體. 操作系統. 服務端軟體) 2. 服務端必須綁定一個固定的地址 2.什麼是互聯網 兩大要素: 1. 底層的物理鏈接 ...
  • 面向對象編程(中級) 筆記目錄:(https://www.cnblogs.com/wenjie2000/p/16378441.html) lntelliJ IDEA ●IDEA介紹(內容僅需瞭解) IDEA全稱Intelli IDEA 在業界被公認為最好的Java開發工具 IDEA是JetBrain ...
  • Lambda 表達式(lambda expression)是一個匿名函數,Lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函數,即沒有函數名的函數。Lambda表達式可以表示閉包(註意和數學傳統意義上的不同)。 閉包就是能... ...
  • 總結 這場表演邀請了三位角色:run.sh、main.py、path.sh,拍攝場地選在了 Windows -> Git Bash 群演1號 run.sh #!/usr/bin bash . ./path.sh || exit -1 # demo.py無法直接找到是因為 $PATH中已經沒有 工作目 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...