星星博客 »  > 

Java基础回顾_Java方法详解

Java基础回顾_Java方法详解

何谓方法?

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

设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只能完成一个功能,这样利于我们后期的发展。


个人随笔:

  1. 方法命名遵循 小驼峰原则

  2. main方法尽量保持简洁、干净

  3. 方法其实就是C语言里的函数,方法遵循原子性,即一个方法只完成一件事

  4. 有些方法没有return返回值,于是方法体就不需要写返回值类型,这个时候就要用 void 替代 返回值类型

  5. 有参数的方法一定要有return返回值,没有参数的方法即void方法就不需要return返回值

  6. 参数类型***这里得注意:参数类型分为***形式参数实参(或称为***变量***)。

    形式参数:形参就是创建方法的时候我个人定义的像 int a, int b 这样的,没有实际值,等着调用的时候再往里传具体值的参数,相当于占位符,先把位置占着,用的时候再给它其他的值;

    实参(或称为***变量***):方法在被调用的时候直接给参数赋值,像add( 1, 2);这种里面的 1和2 就是实参。


代码格式:

修饰符 + 返回值类型 + 自定义方法名 + ( 参数类型 + 参数名—>”参数可以定义一个或者多个“ ){

//执行的代码语句,即方法体

return + 返回值;

}

例如:下面的add方法(加法):

​ public int add( int a, int b ){

​ return a+b;

}

个人随笔:

  1. 有时候用return 0;去终止方法。
  2. 方法的带你用:用对象名去点方法名,例如:对象名.方法名(实参列表)

***拓展了解:***值传递和引用传递

Java都是值传递!只有值传递!


方法的重载

个人练习:

结合Scanner对象,完成手动输入两个整数打印最小值;以及直接注入三个整数然后得到三个整数中最小的那个。

这两个方法的方法名都是min,但是它们的参数列表不一样,一个是两个变量(实参),一个是3个变量(实参)!!!!妙啊!!!

public class Demo01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请依次输入要比较的两个整数:");
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        int min = min(a, b);
        System.out.println("输入的两个整数中较小的那个整数是:"+min);
        int min1 = min(6, 8, 3);
        System.out.println("三个整数中最小的整数是:"+min1);
    }
    public static int min(int a,int b){
        int minNumber;
        if (a<b){
            minNumber = a;
        }else {
            minNumber = b;
        }
        return minNumber;
    }
    //重载的取最小值的方法,但是参数列表不一样,多了一个参数
    public static int min(int a,int b,int c){
        int minNumber;
        if (a<b){
            minNumber = a;
        }else {
            minNumber = b;
        }
        if(minNumber<c){
            return minNumber;
        }else {
            minNumber=c;
        }
        return minNumber;
    }
}

方法重载的规则:

  1. 方法名称必须一模一样
  2. 参数列表必须不同,即参数的***个数不同***、或参数的***类型不同***、或参数的***排列顺序不同***等
  3. 方法的***返回值类型可以相同,也可以不相同***,但是仅仅只有返回值类型不同也不行

个人随笔:

当编写了重载的方法的时候,再去调用这些方法名相同的方法的时候,编译器它自己会根据参数列表的差异去一个方法一个方法的找,知道找到对应的方法,如果找不到,它就会报错!


命令行传参(不经常使用)

  • 有时候你希望运行一个程序的时候,再传递给它消息。这个时候就要靠传递命令行参数给main()函数去实现。

可变参数

什么是可变参数?

有时候根据实际需求,可能需要用方法重载去编写 几十个甚至上百个 方法名相同,参数链表不同 的方法,这样也太离谱了,这时候就诞生了***可变参数*** 这种东西,它解决了上述问题!妙啊!!!!!!

用法:在参数列表中的参数声明的参数类型后面加上一个省略号,例如:

利用可变参数,自定义任意的数据传入方法,取得最大值!

public class Demo01 {
    public static void main(String[] args) {
        printMax(1,5,3,4,6,8,2,3,9,6,4);
        printMax(new double[]{1,2,3});
    }
    public static void printMax(double... numbers){
        if (numbers.length == 0){
            System.out.println("No argument passed");
            return;
        }
        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);
    }
}


递归(重点)

递归就是:***A方法调用A方法,即自己调用自己!***递归是一种思想!

递归结构包括两个部分:

  1. 递归头: 就是有一串可以停止调用方法(函数)的 代码,让程序不会无限循环运行!
  2. 递归体:

友情提示:能不用递归就不用递归,因为如果调用方法次数过多,会非常占用资源,影响性能!


个人练习:

写一个计算器,要求实现加减乘除功能,并且能循环接收新的数据,通过用户交互实现(即Scanner对象)

用到了 while循环 switch语句,实现了数据的循环输入并计算!!!!妙啊!!!!

import java.util.Scanner;

public class Calculator{
    public static void main(String[] args) {
        //创建对象用来调用对象里的方法
        Calculator calculator = new Calculator();
        //调用computer方法
        calculator.computer();
    }
    //第一步:加减乘除四个方法(因为要循环计算,每次传入一个数字,所以参数列表应该只有一个参数)
    //加法
    public static double add(double a){
        System.out.println("请输入一个数:");
        Scanner scanner3 = new Scanner(System.in);
        double b = scanner3.nextDouble();
        return a+b;
    }
    //减法
    public static double subtract(double a){
        System.out.println("请输入一个数:");
        Scanner scanner3 = new Scanner(System.in);
        double b = scanner3.nextDouble();
        return a-b;
    }
    //乘法
    public static double multiply(double a){
        System.out.println("请输入一个数:");
        Scanner scanner3 = new Scanner(System.in);
        double b = scanner3.nextDouble();
        return a*b;
    }
    //除法
    public static double divide(double a){
        System.out.println("请输入一个数:");
        Scanner scanner3 = new Scanner(System.in);
        double b = scanner3.nextDouble();
        return a/b;
    }

    //第二步:完成循环输入数据的功能(while(true)+switch),必须创建一个方法完成这一步
    public void computer(){
        System.out.println("请输入一个数:");
        Scanner scanner1 = new Scanner(System.in);
        double a = scanner1.nextDouble();

        while(true){
            Scanner scanner2 = new Scanner(System.in);
            System.out.println("你可以输入的操作有:加(+)减(-)乘(*)除(/)清零(小写的c)结束(小写的end)--->");
            String str = scanner2.nextLine();
            switch (str){
                case "+":
                    a = add(a);
                    System.out.println("="+a);
                    break;
                case "-":
                    a = subtract(a);
                    System.out.println("="+a);
                    break;
                case "*":
                    a = multiply(a);
                    System.out.println("="+a);
                    break;
                case "/":
                    if (a == 0){
                        System.out.println("除法分子不能为零,请重新输入:");
                        break;
                    }
                    a = divide(a);
                    System.out.println("="+a);
                    break;
                case "c":
                    computer();
                    break;
                case "end":
                    System.exit(-1);
                    break;
                default:
                    System.out.println("输入的字符有误!");
            }
        }
    }

}


数组

什么是数组 ?

数组是***相同类型*** 数据的***有序组合***。

数组的声明创建

相关文章