zoukankan      html  css  js  c++  java
  • Java方法的调用以及方法参数传递、方法的递归调用

    一、方法的调用以及方法参数传递

    1、方法的定义:

    ​ 访问修饰符 返回值类型 方法名 ([参数列表]){

    ​ 方法体

    }

    如果方法体中需要一些未知的数据作为执行条件,那么这些数据可以作为参数。

    如果方法需要返回数据,在定义有返回值的方法时需要明确返回值类型

    方法调用的两种方式:

    1、对象名.方法名(参数)

    2、直接写方法名调用,但必须是static修饰的

    //获取这个字符串的第一个字符
    public static char method1(String str){
        return str.charAt(0);//获取字符串的第一个字符
    }
    
    //方式一:调用方法
    对象名.method1();
    //方式二:调用静态方法(static修饰的)
    String s="abc";
    char c=method1(s)//s将赋值给方法的形参str,那么方法执行时str有值
    //c就是方法调用后的返回值
    

    1、方法的参数是基本数据类型,它传递的是值

    //计算一个数的平方
    public static int pow(int a){
        a=a+2;//6
        return a*a;//6*6=36
    }
    
    public static void main(String[] args){
        int num=4;
        int sum=pow(num);//num是实参	num赋值给a
        System,out,println(num);//4
        System.out.println(sum);//36
    }
    

    2、方法的参数是引用数据类型,它传递的是地址(String类型除外)

    //参数 是数组类型
    public static int pow(int[] arr){
        arr[0]=arr[0]+2;//根据地址 改变数组的第一个元素值arr[0]=4;
        return arr[0]*arr[0];//4*4
    }
    

    调用

    //调用另一个pow
    	int[] array={2,3};
    	int sum2=pow(array);//array中存放数组的地址,将地址赋值给arr 形参
    	System.out.println(array[0]);//4
    	System.out.println(sum2);//16
    

    方法的重载:

    ​ 在一个类中,存在相同方法名的两个及以上的方法,且他们的参数列表不同(参数类型不同,参数个数不同,参数顺序不同),不考虑参数名,不考虑返回值类型

    ​ 一个类中不能存在完全相同的方法,他们是重复的方法JVM编译不通过

    例如:

    public int add(int a,int b){
        return a+b;
    }
    public int add(long a,long b){
        return (int)(a+b);
    }
    //与前两个 不重载
    public void add(int c,int d){
        
    }
    //能与 方法1,2构成重载
    public void add(int a){
        
    }
    //能与 方法1,2构成重载
    public void add(int a,long b){
        
    }
    //能与 方法1,2构成重载
    public void add(long a,int b){
        
    }
    

    把握;方法名是否相同,同时参数列表是否相同(参数个数不同 或者参数类型不同或者参数顺序不同)

    在一个方法中可以调用其它的方法,它们的执行流程


    /**
         * 程序入口
         * @param args
         */
        public static void main(String[] args) {
            System.out.println("这里是main方法的开始");
             method1();
            System.out.println("这是main方法的结束");
        }
        // 在一个方法中可以调用另一个方法, 它们的执行顺序是这样的
        public static   void method1(){
            System.out.println("这是method1 的开始语句块 ");
            // 调用method2
            method2();
            System.out.println("这是method1的 结束语句块");
        }
        public static void method2(){
            System.out.println("这是method2 的开始语句块 ");
            //  调用method3
            method3();
            System.out.println("这是method2 的结束语句块");
    
        }
    
        public static  void  method3(){
            System.out.println("这是method3的执行语句块");
        }
    

    二、方法的递归调用

    1、定义

    ​ 在一个方法中,运用方法自身调用,这样的调用称为方法的递归调用,为了避免出现方法调用时出现死循环,递归调用中必须定义方法结束调用的条件。

    方法递归调用执行流程

    public static void m3(int i){
            if(i==5){
                return ;
            }
            System.out.println("这是m3方法开始i :"+ i);
            i++;
            m3(i);
            System.out.println("m3方法的结束 i:"+ i );
      }
       public static void main(String[] args) {
          
    
            m3(0); //
        }
    

    练习1 : 使用递归计算一个数的阶乘

    ​ n =5 = 5! = 5*4的阶乘

    ​ f(n) = n* f(n-1) = (n-1)*f(n-1-1)

    public static int f(int n ){
        if(n==1){
            return 1;
        }
        int s = n*f(n-1);
        System.out.println("结束 --"+s);
        return s;
    }
    // n =5             n=4                 n=3          n=2           n=1 return 1
     // s = 5*f(4)      s=4* f(3)        s= 3* f(2)    s=2*f(1)
     //  s=5*24          s=4* 6             s=3* 2= 6     s=2
     // s = 120
    
  • 相关阅读:
    百分点零售行业大数据解决方案
    百分点用户标签管理系统
    百分点个性化系统解决方案
    百分点数据洞察系统解决方案
    来学学数据分析吧(二)第一章 预测和关联数量特征
    来学学数据分析吧(一)
    生产者和消费者问题学习以及Java实现
    java中的双重锁定检查(Double Check Lock)
    python学习(十四)面向对象
    python学习(十二)模块
  • 原文地址:https://www.cnblogs.com/hss945/p/13755853.html
Copyright © 2011-2022 走看看