java学习笔记day6【方法】

一、方法

方法:

  • 是语句的集合,组成在一起执行一个功能。
  • 包含于类或者对象中
  • 在程序中被创建,在其他地方被调用

方法设计的原则:一个方法只完成一个功能【方法的原子性】,有利于后期扩展。

变量的命名规范;

  • 所有的变量、方法、类名,见名知意
  • 局部变量、类成员变量、方法名:首字母小写和驼峰原则:monthSalary,除了第一个单词意外所有的首字母都大写
  • 常量:大写字母和下划线:MAX_VALUE
  • 类名:首字母大写和驼峰原则:GoodMan

方法定义:只有把这个add方法用修饰符static定义成类方法才能在类中引用

在这里插入图片描述

1.方法定义

语法:

修饰符 返回值类型 方法名(参数类型 参数名){
方法体
```
return 返回值;

}
参数分类:

  • 形参:相当于一个占位符

  • 实参:实际调用时传递的参数

2.方法调用

  • 当方法有返回值的时候,方法调用会被当做一个值来处理。
  • 当方法没有返回值的时候,方法调用是一条语句

代码实例:

这里可以理解一下,在方法中碰到return之后方法就结束了,后面就不会执行了。

package com.javastudy.method;
public class Demo02 {
    public static void main(String[] args) {
        int c=max(1,1);
        System.out.println(c);
    }
    //比大小
    public static int max(int a,int b){
        int result=0;
        if (a==b){
            System.out.println("a=b");
            return 0;//return除了返回值,还可以终止方法,
            // 程序在方法里面执行到return这一步就结束了,后面就不跑了。
        }
        if (a>b){
            result=a;
        }else {
            result=b;
        }
        return result;
    }
}
输出;
a=b
0

3.方法重载

方法重载;在一个类中,有相同的函数名称但是形参不同的函数。

方法重载的原则;

  • 方法名必须相同
  • 参数列表必须不同
  • 方法返回值类型可以相同也可以不同
  • 仅仅方法返回值类型不同不足以成为方法重载

方法重载后编译器会根据调用方法的参数个数,参数类型,逐个匹配对应的方法,如果匹配失败,编译器会报错。

4.命令行传参(了解)

package com.javastudy.method;
public class Demo03 {
    public static void main(String[] args) {
        //args.length是数组长度
        for (int i = 0; i < args.length; i++) {
            System.out.println("args["+i+"]:"+args[i]);
        }
    }
}
  • 打开程序所在文件
    在这里插入图片描述

  • 在文件夹下打开命令行,用javac去编译文件
    在这里插入图片描述

如图所示,出现了一个错误,最后查找资料加上红框内的代码编译成功

  • 编译出class文件后去执行,编译的时候不需要加包名,但是执行的时候一定要把包名写上

在这里插入图片描述

5.可变参数

JDK1.5以后引入的,当你不知道要传几个参数时,就定义一个可变长的参数。

  • 定义方法:在方法声明中,指定参数类型后加个省略号

  • 注意:一个方法中只能指定一个可变长的参数,并且这个可变长参数必须是方法的最后一个参数,任何普通参数必须在他之前声明。

package com.javastudy.method;
public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04=new Demo04();
        demo04.test(1,2,3);//这里具体传值个数是可变的
    }
    public void test(int... i){//这地方去声明一个可变长参数
        for (int j=0;j<i.length;j++){
            System.out.println(i[j]);
        }
    }
}
输出:
1
2
3

再来看一个例子去理解一下这个可变长参数

package com.javastudy.method;
public class Demo04 {
    public static void main(String[] args) {
        //调用可变参数的方法
        printMax(24,52,6,4,8,6,32,44,59);//这个地方我传多少个参数都可以
        printMax(new double[]{1,2,3});//这里是传了一个数组
    }
    public static void printMax(double...numbers){
        if (numbers.length==0){
            System.out.println("没有数据输入");
            return;
        }
        double result=numbers[0];
        //排序
        for (int i=1;i<numbers.length;i++){
            if (numbers[i]>result){
                result=numbers[i];
            }
        }
        System.out.println("最大值是"+result);
    }
}
输出:
最大值是59.0
最大值是3.0

二、递归

递归:A方法自己调用自己

递归结构包括两个部分:

  • 递归头:什么时候不调用自身方法,如果没有就会陷入死循环。
  • 递归体:什么时候需要调用自身方法。

代码实例:

package com.javastudy.method;
import java.util.Scanner;
public class Demo05 {
    //计算阶乘
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入数字:");
        int number=scanner.nextInt();
        System.out.println(f(number));
        scanner.close();
    }
    //5! 5*f(4)
    //f(4)=4*f(3)
    //f(3)=3*f(2)
    //f(2)=2*f(1)
    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }
}
请输入数字:
5
120

以5!为例,递归原理:

在这里插入图片描述

缺点:如果递归层次比较大,会导致栈溢出,能不用递归就不用递归。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值