【KuangStudy】Java方法详解

Java方法详解

什么是方法?

  • 方法是解决一类问题的步骤的有序集合
  • 方法包含于类或对象中
  • 方法在程序中被创建,在其他地方被引用
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合,我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展
  • 方法的命名规则:驼峰原则
//加法方法
public static int add(int a,int b){
    return a+b;
}

方法的定义和调用

定义

Java方法类似于其他语言的函数,是用来完成特定功能的代码片段,定义一个方法包含以下语法:

修饰符 返回值类型 方法名(参数类型 参数名){
    ……
    方法体
    ……
    return 返回值;
}
  • 修饰符:这是可选的,它告诉编译器如何调用该方法,定义了该方法的访问类型
  • 返回值类型:方法可能会返回一个值,有些方法执行特定的操作,没有返回值,在这种情况下,返回值类型为空 void
  • 方法名:是方法的实际名称,方法名和参数列表共同构成方法签名
  • 参数类型:参数像一个占位符,当方法被调用时,外界传递值给参数,被传递的值被称为实参或变量。参数是可选的,方法可以不包含任何参数
    • 形式参数:形参在方法被调用时用于接收外界输入的数据
    • 实际参数:调用方法时实际传给方法的形参的数据
  • 方法体:方法体包含具体的语句,定义该方法的功能
  • return:return返回一个返回值的同时会结束该方法
//比大小
public static int max(int num1,int num2){
    return num1>num2?num1:num2;
}

调用

  • 调用方法:对象名.方法名(实参列表)

  • Java支持两种调用方法的格式

    • 当方法返回有返回值时,方法调用通常被当做一个值
    int larger=max(20,30);
    
    • 如果方法返回值类型是void,没有返回值,方法调用一定是一条语句
    System.out.println("Hello,World!")
    
  • Java的方法都是值传递而不是引用传递,C的函数既可以值传递也可以引用传递(指针)

方法的重载

  • 重载就是在一个类中,有相同的函数(方法)名,但形参不同的函数(方法)
  • 方法重载的规则:
    • 方法名称必须相同
    • 参数(形参)列表必须不同,个数不同、类型不同、参数排列顺序不同等
    • 方法的返回类型可以相同也可以不相同
    • 仅仅返回类型不同不足以成为方法的重载
  • 实现理论
    • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错

命令行传递参数(了解)

  • public static void main(String[] args) {
            for (int i = 0; i < args.length; i++) {
                System.out.println("args["+i+"]:"+args[i]);
            }
        }
    

可变参数

  • JDK 1.5开始,Java支持传递同类型的可变参数给一个方法(本质是数组!)

  • 在方法声明中,在指定参数类型后加一个省略号(…)

  • 在一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明

    public class Demo01 {
        public static void main(String[] args) {
            Demo01 demo01=new Demo01();//创建Demo01类的一个对象demo01
            int sum=demo01.add(1,1,2,3,5,8,13);//调用demo01对象的add方法并将返回值赋值给sum变量
            System.out.println("sum="+sum);//sum=33
        }
    
        public int add(int...i){
            int sum=0;
            for (int j = 0; j < i.length; j++) {//遍历i数组,通过j下标引用
                sum+=i[j];
            }
            return sum;
        }
    }
    

递归讲解(栈机制)

  • 嵌套:A方法调用B方法
  • 递归:A方法调用A方法
  • 递归结构:
    • 递归头:什么时候不调用自身方法。如果没有头,将陷入死循环(栈溢出)
    • 递归体:什么时候需要调用自身方法
public class Demo01 {
    public static void main(String[] args) {
        int sum=f(7);
        System.out.println("sum="+sum);//sum=5040
    }

    public static int f(int n){
        if(n>1) {
            return n*f(n-1);//前阶段+返回阶段
        }else{
            return 1;//边界条件
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值