Java基礎: 方法(函數的調用)


方法解釋

//方法類似其他語言的函數
package com.cl.Method;

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

    //加法
    //需加static讓它變成過一個類方法,main才能直接調用
    //實參:eg:main的a:1,b:2;
    //形參:由於定義作用的,eg:下面的a,b

    public static int add(int a, int b){

        //return返回的一個結果
       return a+b;
    }
    //拓展!!
    //值傳遞和引用傳遞
    //值傳遞:在方法被調用時,實參通過形參把它的內容副本傳入方法內部,此時形參接收的內容是實參值的一個拷貝,因此在方法內對形參的任何操作,都僅僅是對副本的操作,不影響原始實參的內容
    //引用傳遞:”引用”也就是指向真實內容的地址值,在方法調用時,實參的地址通過方法調用被傳遞給相應的形參,在方法體內,形參和實參指向通愉快內存地址,對形參的操作會影響的真實內容
    //Java都是值傳遞

調用可變參數

package com.cl.Method;

public class Demo03 {
    public static void main(String[] args) {
        //調用可變參數方法
        printMax(34,3,3,2,56.5);
        printMax(new double[]{1,2,3});
    }

    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);
    }
}

*遞歸(重點)

//遞歸!!!
//遞歸結構包括兩個部分:
//遞歸頭:什么時候不調用自身方法,如果沒頭,將陷入死循環
//遞歸體:什么時候調用自身方法
package com.cl.Method;
//階乘
public class Demo04 {
    //2! 2*1
    //31  3*2*1
    //5! 5*4*3*2*1
    public static void main(String[] args) {
        System.out.println(f(4));
    }
    //1! 1
    //2! 2*1
    //5! 5*4*3*2*1

    //2 2*f(1)
    //3 3*f(2)
    //階乘:eg: 5的階乘==5*(4*3*2*1)==5*f(4);
    public static int f(int n){

        if (n==1){
            return 1;
        }else{
            return  n*f(n-1);
        }
    }
}
//遞歸缺點:時間復雜度高
//我認為遞歸本身不重要,他的思想重要

練習:加減乘除計算器

package com.cl.Method;
//練習:加減乘除計算器
import java.util.Scanner;

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

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

    public static  double jian(int a,int b){
        return a-b;
    }

    public  static  double cheng(int a,int b){
        return a*b;
    }

    public static  double chu(int a,int b){
        return a/b;
    }


    public static void menu(){
        int a,b,c;
        System.out.println("please input database:");
        System.out.println("1,add\t2,jian\t3,cheng\t4,chu");
        Scanner scanner = new Scanner(System.in);
        a=scanner.nextInt();
        switch(a){
            case 1:

                b=scanner.nextInt();
                c=scanner.nextInt();
                System.out.println("值:"+add(b,c));
                break;
            case 2:
                b=scanner.nextInt();
                c=scanner.nextInt();
                System.out.println("值:"+jian(b,c));
                break;
            case 3:
                b=scanner.nextInt();
                c=scanner.nextInt();
                System.out.println("值:"+cheng(b,c));
                break;
            case 4:
                b=scanner.nextInt();
                c=scanner.nextInt();
                System.out.println("值:"+chu(b,c));
                break;
            default:
                break;
        }
        scanner.close();

    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM