初学Java基础Day08 方法,方法的递归,方法的重载

一,方法

1.概念:

        特定功能的代码块

2.好处:

        减少代码的冗余

3.分类:

1.无参数无返回值的方法

2.带参数的方法

3.带返回的方法

4.理解:

        参数是方法调用时传入的数据,返回值是方法执行完毕后返回的数据

1.无参数无返回的方法

//语法结构:public static void 方法名(){
					...代码块....
			}

注意:public(访问修饰符)表示共有的意味着该方法在哪都可以调用

static 表示该方法为静态方法,静态方法直接使用类名调用

void 表示无返回值,该方法执行完毕后不会返回数据

方法写在类里,方法与方法之间是平级关系

方法必须被调用,不然永远是摆设,方法可以重复调用

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

        Test01.run();  //在主方法中用类名调用方法
        Test01.play();
        Test01.run();
        play();      //在同一个类中这种写法也可以去调用方法
        run();
    }
   public static void run(){
       System.out.println("跑的方法---");
   } 
   public static void play(){

       System.out.println("玩的方法");
   }
}

2.带参数的方法

//语法结构
		public static void 方法名(参数列表){

            ...代码块...
        }

案例:设计一个方法getMax,传入两个int类型的数字,输出最大值

public class Test01{

    public static void main(String[] args){
		
        //调用方法
        getMax(10,20);   //10和20 是实参
    }
    public static void getMax(int a,int b){   //a和b就是形参
        int max =(a>b)?a:b;
        System.out.println("最大值为:"+max);
    }
}

注意:形式参数-----形参:方法声明时设置的参数,参数必须设置类型,多个 参数用逗号隔开,

局部变量表示方法里的变量,其作用域只能在方法中使用;形参也是 局部变量

实际参数:--实参:调用方法是传入的具体参数;多个实参用逗号分 隔;实参与形参个数必须一致,类型必须兼容。

3.带返回值的方法

//语法结构:
		public static 返回值类型 方法名([参数列表]){
            ...代码块...
             return 具体数据;
        }

案例:设计一个方法getMax,传入两个int类型的数字,返回最大值

public class Test01{
        public static void main(String[] args){
			int max = getMax(10,20);
            System.out.println("最大值为:"+max);
        }
        public static int getMax(int a,int b){
            int max=(a>b)?a:b;
            return max; //1.将max返回给调用方  2.结束该方法
        }
    }

注意:方法声明时规定返回值类型;返回的具体数据必须和方法声明时返回 值类型兼容

方法功能的单一性(不要让一个方法的功能太强大,否则会导致其可维护性降低)

二,方法的重载

定义一个方法的步骤:1.考虑方法名 2.参数(几个参数,类型) 3.返回值(类型)

1.理解:

        方法与方法之间的关系

2.条件:

        方法必须在同一个类中;2.方法名必须一致 3.参数列表的个数或者类型 不一致;4.与返回值无关(重点!!!!)

3.好处:

系统会根据具体实参类型自动匹配到对应的方法中

案例:创建一个方法,传入两个int值,返回最大值;创建一个方法,传入三个int值,返回最大值;创建一个方法,传入两个double值,返回最大值;创建一个方法,传入三个double值,返回最大值

public class Test01{
    public static void main(String[] args){
        int max=getMax(10,20);
        System.out.println(max);
      //System.out.println(getMax(10,20)) 也可以直接打印,前提是该方法一定要有返回值
    }
    public static int getMax(int a,int b){
        int max = (a>b)?a:b;
        return max;
     //return (a>b)?a:b;    也可以直接这样写
    }
    public static int getMax(int a,int b,int c){
        int max=(a>b)?a:b;
        max=(max>c)?max:c;
        return max;
    }
    public static double getMax(double a,double b){
         int max = (a>b)?a:b;
        return max;
    }
    public static double getMax(double a,double b,double c){
        int max=(a>b)?a:b;
        max=(max>c)?max:c;
        return max;
    }
}

应用场景:一个类的多个方法的功能一致细节实现不一样,就可以考虑使用重载

三,方法的递归

前言:方法里声明的变量叫做局部变量,其作用域就在该方法的内部

概念:方法调用方法自身

经验:1.找规律 2.找出口

错误示范:

public static void main(String[] args){
    method();
}
public static void method(){

    method();
}//会显示 栈内存溢出 StackOverflowError

//错误出现的原因:调用方法就会在栈内存开辟空间,用于存放该方法的局部变量,死循环的调用方法,很快栈内存就被装满并溢出了

案例:设计一个方法,传入int类型的数字n,计算n的阶乘

public static void main(String[] args){
    int num = getMath(5);
    System.out.rontln(num);
}
public static int getMath(int n){
    if(n==1){
        return 1;
    }else{
        return getMath(n-1)*n;
    }
}

注意:方法结束栈内存里的空间会立刻销毁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值