Java基础之方法

方法

1.方法的定义

概念:Java方法是语句的集合,他们在一起执行一个功能。

  1. 解决一类问题的有序组合;
  2. 包含于对象或类中;
  3. 方法在程序中被创建,在其他地方被引用;

设计方法的原则:最好保持方法的原子性,即一个方法只完成一个功能,这样利于后期的扩展。

修饰符:public、private、protect、default

返回值类型:int、double、void(空值)等

方法名 :首字母小写及驼峰命名(见名知意)

参数:可有可无

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

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

        test();
    }

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

    //计算1~100的奇数和和偶数和
    public static void test(){
        int oddSum = 0;
        int evenSUm = 0;

        for (int i = 0; i < 101; i++) {
            if (i%2!=0){
                oddSum += i;
            }else {
                evenSUm += i;
            }
        }
        System.out.println("奇数的和为:"+oddSum);
        System.out.println("偶数的和为:"+evenSUm);
    }
}

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

  1. 当方法返回一个值时,方法调用通常被当作一个值

    int max = max(12,14);
    
  2. 如果返回值是void,方法调用一定是一条语句

    System.out.println("Hello,World!");
    

Java中只有值传递!

2.方法的重写和重载

2.1区别

1)重写:是存在子类和父类之间的,子类定义的方法与父类中的方法具有相同的方法名、相同的参数类型和相同的返回类型

2)重载:是指同一个类中的多个方法具有相同的名字,但是这些方法具有不同的参数列表,即参数的数量或者

参数的类型不能完全相同

3)重写是父类与子类之间多态性的一种表现

4)重载是一类中多态性的一种表现

2.2重载

  1. 方法名称必须相同
  2. 参数列表必须不同(个数、类型或参数排列顺序不同等)
public class Demo03 {
    public static void main(String[] args) {

        double max = max(12, 12);
        //int max = max(12, 12);
        System.out.println(max);

    }

    //比较大小
    public static int max(int num1, int num2){

        int result = 0;
        if (num1 == num2){
            System.out.println("num1==num2");
            return 0;//用于终止方法
        }
        if (num1 > num2){
            result = num1;
        }else {
            result = num2;
        }

        return result;
    }

    public static double max(double num1, double num2){

        double result = 0;
        if (num1 == num2){
            System.out.println("num1==num2");
            return 0;//用于终止方法
        }
        if (num1 > num2){
            result = num1;
        }else {
            result = num2;
        }

        return result;
    }
}

3.可变参数

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

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

public class Demo04 {
    public static void main(String[] args) {
        //调用可变参数的方法
        printMax(1,2,3,4,5);
        printMax(new double[]{1,2,3});
    }

    public static void printMax(double... numbers){
        if (numbers.length == 0){
            System.out.println("No argument password");
        }
        double result = numbers[0];

        //排序
        for (int i = 1; i < numbers.length; i++){
            if (numbers[i] > result){
                result = numbers[i];
            }
        }
        System.out.println("The max value is " + result);
    }
}

递归

定义:自己调用自己,直到达到边界条件后结束,然后返回结果。

结构:

  1. 递归头:递归的边界(即结束条件),没有将会陷入死循环!
  2. 递归体:什么时候需要调用自身方法
//了解递归思想(调用自身次数过多时,不适合使用递归)
public class Demo05 {
    public static void main(String[] args) {
        System.out.println(f(5));
    }

    //计算5的阶乘
    public static int f(int i){
        if (i == 1){
            return 1;
        }else {
            return i*f(i-1);
        }
    }
}

练习->计算器

import java.util.Scanner;

public class EasyCalculator {
    public static void main(String[] args) {

        while (true) {
            //创建Scanner对象
            Scanner scanner = new Scanner(System.in);
            //用于接收用户输入的第一个数字
            System.out.println("请输入您想要计算的内容:");
            double a = scanner.nextDouble();
            //接收用户输入的运算符
            char x = scanner.next().charAt(0);
            //接收用户输入的第二个数字
            double b = scanner.nextDouble();

            switch (x) {
                case '+':
                    add(a, b);
                    break;
                case '-':
                    reduce(a, b);
                    break;
                case '*':
                    multiply(a, b);
                    break;
                case '/':
                    if (b == 0) {
                        System.out.println("除数不能为0!");
                    } else {
                        divide(a, b);
                        break;
                    }
            }
            //为了能循环计算,没有关闭Scanner,需手动关闭
            //scanner.close();
        }

    }

    //加、减、乘、除四个方法
    public static void add(double a, double b){
        System.out.println("两个数相加为:"+(a+b));
    }
    public static void reduce(double a, double b){
        System.out.println("两个数相减为:"+(a-b));
    }
    public static void multiply(double a, double b){
        System.out.println("两个数相乘为:"+(a*b));
    }
    public static void divide(double a, double b){
        System.out.println("两个数相除为:"+(a/b));
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值