java中的方法—方法的书写格式、方法重载、方法传值、方法递归以及代码演示

方法

把重复且有效代码抽取成的形式就是方法

书写格式

修饰符 方法返回值类型 方法名(参数列表){
方法体;
return 返回值;
}
修饰符:public static
方法返回值类型:提供返回值对应的类型来接收
没有返回值使用void
方法名:标识符
参数列表:由参数类型、参数个数以及参数顺序共同决定的
方法体:重复且有效的代码
return:把返回值来进行返回
注意:
1.方法只有被调用才能执行
2.两个明确:方法返回值类型,参数列表
3.return功能:结束方法,把返回值返回
4.当方法有返回值,考虑参数所有的取值情况给定对应的返回值

重载方法(前提是同一个类)

在Java中唯一确定方法——方法签名(由方法名和参数列表共同决定)
重载方法的调用:
在调用重载方法时,如果提供精确匹配方法就做精确匹配
如果没有提供精确方法匹配,就做相对精确匹配
如果提供多个相同程度的相对精确的匹配方法,就匹配不到就会报错。(最好提供精确匹配的方法)
代码:

public class MethodDemo2 {
    //在java中唯一确定方法----方法签名(方法名和参数列表共同决定)
    public static void main(String[] args) {
        //重载方法的调用
      System.out.println(sum(1,2));

    }
    //求和方法
    //sum(int ,int)
     public  static int sum(int m,int n){
        System.out.println("int,int");
        return m+n;
    }
    //sum(double,int)
    public static double sum(double m,int n){
        System.out.println("double,int");
        return m+n;
    }
    //sum(double,double)
    public static double sum(double m,double n){
        System.out.println("double,double");
        return m+n;
    }
}
方法传值

1.当实参为基本数据类型时,传递的是拷贝值
2.当实参为引用数据类型时,传递的是地址值的拷贝
如果拷贝的地址值找到原堆内存的就有可能有影响
如果拷贝的地址值没有找到原堆内存,做任何操作都不会有影响
代码:

public class MethodDemo3 {
    //java中的方法被调用都是加载到栈中执行
    public static void main(String[] args) {
        int i=1;
        //实参---实际传入的值
        //当实参的数据类型是基本数据类型时传递是值的拷贝
        //m(1);
        int[] arr={1,2,3};
        //数组元素是基本数据类型传递的是值得拷贝
        //m(arr[0]);
        //当实参类型是引用数据类型时传递的是地址值的拷贝
        //n(arr);

        //
        mn(arr);
        System.out.println(arr[0]);
    }
    //形参---接收实参的值
    public static void m(int i){//接收的时拷贝值
        i+=2;//操作拷贝值时不会影响原来的值
    }
    public static void n(int[] arr){//接收得是拷贝的地址值
        arr[0]=9;//根据拷贝的地址值找到对应的堆内存改变元素值
    }
    public static void mn(int[] arr){//接收的是拷贝地址值
        arr=new int[2];//拷贝的地址值被新数组的地址值覆盖了
        arr[0]=9;//arr指向新数组改变元素值并不会影响原堆内存的元素值
    }
}

有参有返回值
有参无返回值
无参有返回值
无参无返回值

方法递归

执行方法时调用本方法
例子:
sum(5)=1+2+3+4+5
return =5+sum(4)
4+sum(3)
3+sum(2)
2+sum(1)=1
StackOverflowError–栈溢出错误(递归次数过多)
代码:

packagecn.tedu.method;

publicclassMethodDemo1{

publicstaticvoidmain(String[]args){
System.out.println(sum(100));
System.out.println(sum(1000000));   //栈溢出错误

}

//定义递归求和的方法

publicstaticintsum(intm){

//递归结束条件

if(m==1){

return1;

}

returnm+sum(m-1);//5+sum(4)

//4+sum(3)

//3+sum(2)

//2+sum(1)

//sum(1)=1

	}
}
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值