【系列03】方法的学习 方法重载 命令行传参 递归 简单计算机 [有目录]

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

方法的学习

什么是方法

  • 方法是解决一类问题的步骤的有序组合
  • 包含于类或者对象之中
  • 方法在程序中被创建,在其他地方被引用

就比如输出方法如:System.out.println(); 就是被封装好的方法

  • 方法设计原则:一个方法完成一个功能,利于后期扩展 [原子性]

使用方法:

public class Demo01 {
    //main 方法
    public static void main(String[] args) {
        /**
         *  int sum = add(1, 2);
         *         System.out.println(sum);
         */
        way();
    }

    //加法
    public static int add(int a, int b) {
        return a + b;
    }

    public static void way() {
        for (int i = 0; i <= 1000; i++) {
            if (i % 5 == 0) {
                System.out.print(i + "\t");
            }
            if (i % (5 * 3) == 0) {//换行
                //System.out.println();
                System.out.println("\n");
            }
        }
    }
}

方法的定义

在这里插入图片描述

方法调用:比大小

public class Demo02 {
    public static void main(String[] args) {
        int lager = max(3, 5);
        System.out.println(lager);
    }
    //比大小
    public static int max(int a ,int b){
        int result = 0;
        if(a>b){
            result=a;
        } else if (a<b) {
            result=b;
        }else {
            System.out.println("a==b");
            return 0;//终止方法;返回
        }
        return result;
    }
}
  • 使用心得
    1. 方法命名格式定义的是形参.
    2. 方法定义必须要有返回值 返回值return要写在外面,比如像上面这一题返回的时候可以让返回值赋值到外面在返回,就是做一个中间值.
    3. 不要忘记放输出,刚刚做的时候就是没有定义输出值.

重载

  • 一个方法的参数名和方法名有关,如果方法一样,参数名不一致则为重载,与返回值类型无关

  • 就比如刚刚比大小的那个,我们可以有double进行浮点型数据比大小

    public static int max(int a ,int b){
    }
    
    public static double max(double a ,double b){
        double result = 0;
        if(a>b){
            result=a;
        } else if (a<b) {
            result=b;
        }else {
            System.out.println("a==b");
            return 0;//终止方法;返回
        }
        return result;
    }
    
  • 也可以比较三个数的大小

    public static int max(int a ,int b,int c){
    
    }
    
  • 方法名称相同时,会在调用方法时对参数个数 参数类型 等去进行判断,以选择对应方法,如果匹配失败,则编译器报错

重载规则

  1. 方法名必须相同
  2. 参数列表必须不同(个数 类型 参数排列顺序)
  3. 返回类型可以相同可以不同
  4. 仅仅返回类型不同不足以成为方法的重载

拓展:命令行传参

  • 编写如下代码
package com.SunAo.method;

public class Demo03 {
    public static void main(String[] args) {
        for(int i=0;i< args.length;i++){
            System.out.println("args["+i+"]"+args[i]);
        }
    }
}
  • 在该路径下面无法直接用命令行进行传参

    Alt+F12打开Terminal[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iAclDUwa-1673864027312)(C:/Users/%E5%AD%99%E5%A5%A5/AppData/Roaming/Typora/typora-user-images/image-20230113162953201.png)]

  • 需要我们找到绝对路径

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-J9azakdp-1673864145681)(C:/Users/%E5%AD%99%E5%A5%A5/AppData/Roaming/Typora/typora-user-images/image-20230113163140561.png)]

  • cmd+空格 进入命令行

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ATTLdMOj-1673864027313)(C:/Users/%E5%AD%99%E5%A5%A5/AppData/Roaming/Typora/typora-user-images/image-20230113163257864.png)]

  • 实现命令行传参

    1. javac+文件名对java文件进行编译
    2. ```cd …/`回退
    3. 回退到KuangStudy路径以后才能进行传参

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-07TNy3wU-1673864027314)(C:/Users/%E5%AD%99%E5%A5%A5/AppData/Roaming/Typora/typora-user-images/image-20230113163357066.png)]

可变常参数

package com.SunAo.method;

public class Demo04 {
    public static void main(String[] args) {
        Demo04 demo04 = new Demo04();
        demo04.test();
    }
    public void test(int...i){//可变常参数必须放在最后面
    }

}
  • int...i可变常参数必须放在最后面

    正确

    public void test(int j,int...i){
    }
    

​ 下面错误

  • public void test(int...i,int j){
    }
    

递归 ``重点难点

递归:自己调用自己

  • 递归算5的阶乘

    package com.SunAo.method;
    
    public class Demo06 {
        public static void main(String[] args) {
            System.out.println(f(5));
        }
        public static int f(int n){
            if(n==1) {
                return 1;
            }else {
                return n*f(n-1);
            }
        }
    }
    

计算器

  • java实现计算器功能 switch
package com.SunAo.method;
import java.util.Scanner;
public class DemoMath {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("----请输入计算内容(+ - * /)----");
        System.out.println("----第一个数字----");
        int a= scanner.nextInt();
        System.out.println("----符号----");
        String b = scanner.next();
        System.out.println("----第二个数字----");
        int c= scanner.nextInt();
       switch (b){
           case "*":
               System.out.println(a*c);
               break;
           case "+":
               System.out.println(a+c);
               break;
           case "-":
               System.out.println(a-c);
               break;
           case "/":
               System.out.println(a/c);
               break;
       }
    }
    }   
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6