java方法

方法的使用与定义

1.定义:
方法的定义由方法名称、参数、返回值类型和方法体组成;
方法定义
如图,主函数main就是个方法;

public class N {
    public static void main(String[]args){
        int i=5;
        System.out.println(nJie(i));
    }

    public static int nJie(int n){
        if(n==1){
            return 1;
        }else{
           return nJie(n-1)*n;
        }
    }
}

以上述求阶乘的程序为例:
1.对于一个方法,当不需要返回值时,返回值类型写void即可;
而当要返回值时,必须要注意的是,方法的返回值语句不能忘,即return语句;再一个就是韩沪指的方法必须要和定义的方法返回值相同,下图便是返回值为int,而定义的返回值类型是char,故会有报错。

2.在写程序时,一定要注意实参与形参的数据类型匹配和个数匹配;
3.形参与实参:
形参是定义在方法的()中写入,当实参的的值给形参时,这个过程就叫“按值传递”;对于基本数据类型来说,实参传递形参时可以的,但形参的值的改变不会影响实参的变化。

注意:在方法中声明的变量是局部变量,它的作用域只能在方法当中,即从它声明开始到变量块结束。

4.方法的好处:在开发当中,每一个大的问题都会分解成小的问题,而每一个小的问题即可以用方法来书写。
(1)易于程序的读写与修改、调试等;
(2)方法的调用,减少了冗余的代码,使得它的代码利用率提高;
(3)方便合作,不同的问题交给不同的人员,编写不同的方法,有效。

方法的重载(OVERLOAD)

以下列程序为例:

public class ChangeBig {
    public static void main1(String[] args) {
        System.out.println(daXiao(5,9));
        System.out.println(daXiao(55.6,16.2));
        daXiao(3,1.2);
    }
    public static int daXiao(int a,int b){
        if(a>b){
            return a;
        }else{
            return b;
        }
    }
    public static double daXiao(double a, double b){
        if(a>b){
            return a;
        }else{
            return b;
        }
    }
    public static void daXiao(int a, double b){
        if(a>b){
            System.out.println(a);
        }else{
            System.out.println(b);
        }
    }


    public static void main(String[] args) {
        System.out.println(max(5,9));
        System.out.println(max(5.1,9.6));
        System.out.println(max(5.3,6.9,11));
    }
    public static int max(int a,int b){
        return a>b? a:b;
    }
    public static double max(double a, double b){
        return a>b? a:b;
    }
    //返回值应为double,但int比double小,故也可以
    public static double max(double a,double b,int c){
        double ret =max(a,b);
        if(ret>c){
            return ret;
        }else {
            return c;     //返回int
        }
    }
}

可以看出,例子中同样的名字可以定义不同的方法,只要它们的参数列表不同即可。
由此,总结重载即为:
(1)方法名相同;(2)参数列表不同(个数、类型);(3)且返回值并不作要求。

方法--------递归思想

1.递归:顾名思义,分为俩个部分:“递”,“归”。即回溯和递推。
2.理解递归:条件:(1)调用自己本身(2)有一个趋近于终止的条件。
3.采用递归时,不要尝试去展开代码,大数据的回溯与递推很难去理解,比如汉诺塔64盘子问题,而是要用横向的思维,是看,起始,过程,结果。

#理解递归,可以采用栈的思想,先进后出。求大问题时,做一半将出现一个小问题压着你,以此类推,只有最顶层的最简单的解决后,再往下推到最后的大问题。递推是一种思想,有事用递推,会浪费内存,占用很多时间,但一部分题天生就就为递归而生,最经典的就是数据结构当中的二叉树。
附汉诺塔问题程序:可自行理解

public class HanNuoTa {
    public static void main(String[] args) {
        System.out.println("输入要移动的数量:");
        Scanner in = new Scanner(System.in);
        int i=in.nextInt();
        hanNuo(i,'a','b','c');
    }
    /*
     * i:数量
     * pan1:起始
     *pan2:中转
     * pan3:目的
     */
    public  static  void hanNuo(int i,char pan1,char pan2,char pan3){
        if (i ==1){
            move(pan1,pan3);     //从a到c
            return;
        }else  {
            hanNuo(i-1,pan1,pan3,pan2);    //将底盘以上的盘子移到中转站
            move(pan1,pan3);                  //将底盘的盘子移到目的站
            hanNuo(i-1,pan2,pan1,pan3);      //将中转站的盘子移到目的站
        }
    }
    public static void move(char pan1,char pan2){

        System.out.print(pan1+"->"+pan2+"  ");
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值