什么是方法?
Java方法是语句的集合,他们在一起执行一个功能。
设计方法原则:一个方法只完成一个功能。
方法的本意是功能块,即实现某个功能的语句块的集合。我们设计方法的时候最好保持方法的原子性,就是一个方法只完成一个功能。
Java方法类似函数,一段完成特定功能的代码。
方法包含一个方法头和方法体。包含:修饰符,返回值类型,方法名,参数类型,方法体
格式:
/*
修饰符 返回值类型 方法名(参数类型 参数名){
	...
        方法体
    ...
    return 返回值;
}
*/
public static int max(int num1,int num2){
    int result = 0;
    if (num1==num2){
        System.out.println("num1=num2");
        return 0;//终止方法
    }
    int result =num1>num2?num1:num2;
    return result;
}
语法:对象名.方法名(实参列表)
Java支持两种调用方式,根据是否有返回值来选择。
两种方式:
int larger = max(30,40);
System.out.println("Hello,World!");
课后拓展:
值传递:传原实参副本,不改变实参变量。
引用传递:传内存地址,操作该地址的变量,原实参发生改变。
Java只存在值传递。
    public static void main(String[] args) {
        //StringBuilder sb = new StringBuilder("iphone");
        //foo(sb); // sb 没有被改变,还是 "iphone"。
        //Java中只有值传递
        int count = 66;
        fun(count);
        String str = "abc";
        fun1(str);
    }
    /*
    值传递:调用方法将实参作为副本放入方法中,无论方法中如何修改不影响原实参
    引用传递:将变量的内存地址传给方法,操作时会找到保存在地址内的变量,一旦修改会对原实参产生影响
     */
    //fun方法
    static void fun(int count){
        count = 666;
    }
    //fun1
    static void fun1(String str){
        str = "aabbcc";
    }
//    static void foo(StringBuilder builder) {
//        builder = new StringBuilder("ipad");
//    }
定义:一个类中,函数名相同,形参不同。
规则:
实现理论:
方法名相同时,IDE根据调用方法的参数个数,类型,顺序注意匹配,以选择对应方法,如匹配失败,则IDE报错
    public static void main(String[] args) {
        double max = max(10.0, 20.0);
        System.out.println(max);
    }
    /*方法的重载:
        1.方法名必须相同
        2.参数列表必须不同(参数个数,类型,排列顺序)
     */
    public static double max(double a,double b){
        double result = 0;
        if (a==b){
            System.out.println("a=b");
            return 0;//终止方法
        }
        if (a>b){
            result = a;
        }else{
            result = b;
        }
        return result;
    }
    public static int max(int a,int b){
        int result = 0;
        if (a==b){
            System.out.println("a=b");
            return 0;//终止方法
        }
        if (a>b){
            result = a;
        }else{
            result = b;
        }
        return result;
    }
代码:
public class Demo03 {
    public static void main(String[] args) {
        /*
        命令行传参
         */
        for (int i = 0; i <args.length ; i++) {
            System.out.println("args["+i+"]:"+args[i]);
        }
    }
}
在文件夹下 javac CommandLine.java
返回src目录cd ../../../
java com.wang.method.Demo03 this is wang
jdk1.5后,java支持互残笛同类型可变参数给一个方法
方法声明中,在指定参数类型后加一个...
一个方法中至指定一个可变参数,它必须是方法的最后一个参数。
public static void main(String[] args) {
    Demo04 demo04 = new Demo04();
    //        		        demo04.test(1,2,3,4,5,6,7,8);
    //调用可变参方式
    printMax(5,8,13,46,95,56,67,82,1);
    printMax(new double[]{1,2,3});
}
//可变参数
public void test(int x,int ... i){
    System.out.println(x);
    System.out.println(i[0]);
    System.out.println(i[1]);
    System.out.println(i[2]);
    System.out.println(i[3]);
    System.out.println(i[4]);
}
public static void printMax(double ... numbers){
    if (numbers.length==0){
        System.out.println("No arguement 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);
}
public static void main(String[] args) {
    System.out.println(fac(3));
}
	/*递归:
	1.自己调用自己
	2.用有限语句定义对象无限集合
		结构:1.什么时间不调用自己 2. 什么时间调用自己
		边界条件: 前阶段 --> 返回阶段
     */
public static int fac(int n){
    if (n==1){
        return 1;
    }else{
        return n*fac(n-1);
    }
}
原文:https://www.cnblogs.com/bwxx/p/13170290.html