Java方法(定义、调用、重载、参数、递归、计算器)

Java方法

1-什么是方法

  • System.out.print(),是什么
    • system:方法
    • out:对象
    • print():方法
  • Java方法是语句的集合,他们在一起执行一个功能
    • 方法是解决一类问题的步骤的有序组合
    • 方法包含于类或对象中
    • 方法在程序中被创建,在其他地方被引用
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性(就是一个方法只能完成一个功能,这样有利于我们后期的扩展)
  • 方法的命名规则:小写开头驼峰命名

2-方法的定义和调用

1.方法的定义:

  • 语法

    • 修饰符 返回值类型  方法名(参数类型 参数名){
          。。。
          return 返回值;
      }
      //例子
      public static int add(int a,int b){
              return a+b;
          }
      
  • 修饰符:告诉编译器怎么调用方法,定义了方法的访问类型(可选的)

  • 返回类型:方法可能会返回值。return ValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值,这种情况return是关键字void

    • return除了可以返回值,还可以终止方法
  • 参数类型:参数像是一个占位符,当方法被调用时,传递值给参数,这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数,参数是可选的,方法可以不包含任何参数

    • 形式参数:在方法被调用时用于接受外界输入的数据(方法里的参数)
    • 实参:调用方法时实际传给方法的数据。(传给方法的参数)
  • 方法体:方法体包含具体的语句,定义该方法的功能

2.方法的调用:

  • 调用方法:对象名.方法名(实参)
  • Java支持两种调用方式,根据方法返回值来选择
    • 当方法返回一个值的时候,方法调用通常被当做一个值。如:int i = max(20,20);
    • 如果方法返回值是void,方法调用一定是一条语句System.out.print("hello");
值传递(Java)和引用传递
  • Java都是值传递

3-方法的重载

  • 重载(over loading)是在一个类里,方法名相同,参数不同。返回类型可以相同也可以不相同

  • 重载规则:

    • 方法名必须相同

    • 参数列表不同(个数不同\类型不同\参数排列顺序不同等)

    • 方法的返回类型可以相同也可以不相同

    • 仅仅范围类型不同不足以成为方法的重载

    •     public static int add(int b ,int a){
              return a+b;
          }
          public static int add(int a,double b){
              return a+(int)b;
          }
          public static int add(double b ,int a){
              return a+(int)b;
          }
          public static double add(double a,double b){
              return a+b;
          }
      
  • 实现理论

    • 方法名相同时,编译器会根据调用方法参数个数、参数类型、等去逐个匹配,选择对应的方法,如果匹配失败,报错

4-可变参数-不定项参数

  • JJDK1.5开始,Java支持传递同类型可变参数给一个方法

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

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

  • 	public static void main(String[] args) {
            //调用可变参数方法
            printMax(3,4,5,1,55,55);//55.0
            printMax(new double[]{1,2,3,5,6,62.1,62.2});//62.2
        }
    
        public static void printMax(double ... nums){
            if (nums.length == 0){
                System.out.println("没有数据");
                return;
            }
            double result = nums[0];
            //找出最大值
            for (int i = 1; i < nums.length; i++) {
                if (nums[i] > result) {
                    result = nums[i];
                }
            }
            System.out.println("最大值为:"+result);
        }
    

5-递归

  • 递归是自己调用自己
  • 递归分为两个部分
    • 递归头:什么时候不调用自己的方法。如果没有头,将陷入死循环
    • 递归体:什么时候需要调用自身方法
	/*
    2!  2*1
    3!  3*2*1
    5!  5*4*3*2*1
     */
    public static void main(String[] args) {
        System.out.println(f(10));
    }
    //5!  5*4*3*2*1
    public static int f(int n){
        if ( n == 1 ) {
            return 1;
        }else {
            return n*f(n-1);//自己调自己
        }
    }

6-作业:计算器

  • 要求实现加减乘除功能,并且能够循环接收新数据,通过用户交互实现
  • 思路推荐:
    • 写四个方法:加减乘除
    • 利用switch进行用户交互
    • 传递需要操作的两个数
    • 输出结果
public class Task01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //简单计算
        for (;;) {
            //运算符
            String str = null;
            //数字A
            double a = 0 ;
            //数字B
            double b = 0;
            //运算结果
            double result = 0.0;
            System.out.print("请输入运算符:如+,-,*,/ 退出:exit  :");
            if (scanner.hasNext()) {
                str = scanner.nextLine();
                if (str.equals("+")||str.equals("-")||str.equals("*")||str.equals("/")){
                    System.out.print("请输入数字A:");
                    //接收数字A
                    if (scanner.hasNextDouble()){
                        a = new Double(scanner.nextLine());
                        System.out.print("请输入数字B:");
                        //接收数字B
                        if (scanner.hasNextDouble()){
                            b = new Double(scanner.nextLine());
                            //调用方法计算
                            result = calculation(str, a, b);
                            System.out.println(a + "" + str + "" + b + "=" + result);
                        }else{
                            System.out.println("请重新输入正确的数字");
                            scanner.reset();
                            continue;
                        }
                    }else{
                        System.out.println("请重新输入正确的数字");
                        scanner.reset();
                        continue;
                    }
                }else if(str.equals("exit")){
                    System.out.println("正在退出。");
                    break;
                }else {
                    System.out.println("请输入正确的操作符");
                    continue;
                }

            }
        }
    }
    //加减乘除
    public static Double calculation(String c,double a,double b){
        switch (c){
            case "+":
                return a+b;
            case "-":
                return a-b;
            case "*":
                return a*b;
            case "/":
                return a/b;
            default:
                System.out.println("请输入正确的操作符");
                return 0.0;
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值