天天看点

JavaSE-05 Method方法JavaSE

JavaSE

五、Method方法

  1. 方法的基本调用
  • Demo1-1:形参、实参
public static void main(String[] args) {
                //直接(两者都是static)调用:这边的参数叫实参,实参可以传递给到形参
                int sum = add(1, 2);
                System.out.println(sum);
            	}

           //add方法:这边add的参数叫形式参数,形参的名字可以随便写啥,但是形参和实参类型要一一对应
          public static int add(int a,int b){
                //a+b就是方法体
                return a+b;
            	}
			}			
           
  • Demo1-2:把功能打包成一个方法并调用
public static void main(String[] args) {
            //调用test方法
            test();
        }

        public static void test(){//void表示返回为空

            for (int i = 0; i <= 1000; i++) {
                if (i % 5 == 0) {
                    System.out.print(i + "\t");
                }

                if (i % (5 * 3) == 0) {
                    System.out.print("\n");//或者System.out.println();
                }
            }
        }
           
  • Demo2:写个比大小的方法
public static void main(String[] args) {

            int max = max(12, 13);
            System.out.println(max);//把返回值打出来
        }

        //比大小
        public static int max(int num1,int num2){
            
            int result = 0;

            if(num1==num2){
                System.out.println("num1=num2");
                return 0;//return还可以终止方法
            }

            else if(num1>num2) {
                result = num1;

            }else {
                result = num2;
            }

                return result;//return给他放在外面来,整个result接收,但是记得初始化


        }
           
public static void main(String[] args) {
            int max1 = max(1,2);
            System.out.println(max1);
        }


        public static int max(int num1,int num2){

            if(num1 == num2){
                System.out.println("num1=num2");
                return 0;

            }else if(num1>num2){
                return num1;
            }else{
                return num2;

            }
        }
           
  1. 方法的重载
  • Demo3:方法名相同,参数类型不同
public static void main(String[] args) {


            double max = max(12, 13);
            System.out.println(max);//把返回值打出来
              }

        public static int max(int num1,int num2){
            int result = 0;

            if(num1==num2){
                System.out.println("两者相等");
                return 0;
            }else if (num1>num2){
                result = num1;
            }else if (num1<num2){
                result = num2;
            }

            return result;
        }


        public static double max(double num1,double num2){
            double result = 0;

            if(num1==num2){
                System.out.println("两者相等");
                return 0;
            }else if (num1>num2){
                result = num1;
            }else if (num1<num2){
                result = num2;
            }

            return result;
        }
           
  1. 命令行传参:
  • Demo3:遍历main方法
//args.length  数组长度  psvm的main方法中是可以传递参数的
			for (int i = 0; i < args.length; i++) {//这个是在遍历参数
            System.out.println("args["+i+"]:"+args[i]);
        }
           
  • 命令行传参:给main方法传递参数
  1. 可变参数
  • Demo4:设置一个可变参数
public static void main(String[] args) {
            //可变参数可以理解为:不知道需要传入多少参数而设置的,可以避免方法的多次重载
            Demo4 demo4 = new Demo4();
            demo4.test(1,2,3,4,5);
             /*
            下面的方法没有static,如果有直接:
            test(1,2,3,4,5);
             */
        }

        //用...表示可以有很多参数(可变参数,并且其他参数必须放在最前面
        public void test(int x,int... i){
            System.out.println(i[2]);
            System.out.println(x);

        }
           
  • Demo5:写一个找传入参数最大值的代码
public static void main(String[] args) {

            printMax(3,31,4,56,7,3);
            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(result);

        }
           
  1. 递归
  • Demo6:方法自己调用自己
public static void main(String[] args) {
                Demo6 demo6 = new Demo6();
                demo6.test();

            }

            public void test(){
                test();
            }

  			//自己调用自己,抛出异常:栈溢出
           
  • Demo7:利用递归写一个阶乘
public static void main(String[] args) {
            System.out.println(f(5));

        } 
        //自己调用自己,阶层的例子

        /*递归需要的条件:
        边界条件:边界(最后一个就会执行到底
        前阶段:一直调用的时候
        返回阶段n*n-1

        栈机制:压了好几个栈  要考虑内存的情况
        学到的是递归思想:一层一层的往下解决
         */
        public static int f(int n){
            if(n==1){
                return 1;
            }else {
                return n*f(n-1);
            }

        }