Java方法

1. 方法的基本属性

方法的定义

  • Java的方法类似于其他语言的 函数 ,是一段用来完成特定功能的代码片段
  • 方法存在于 类 或者 对象 之中。
  • 方法在程序中被创建,在其他地方被引用。
  • 方法设计的原则:保持 方法的原子性 ,即一个方法只完成1个功能。这有利于后期扩展。
    eg:
    public static void main
    ① public;static为 修饰符 表明方法的属性。
    ② void 是返回值类型
    ③ main 是 方法名称(其包括隐藏的形参列表)

方法组成的语法

一般情况下,定义一个方法包含以下语法
方法包含一个 方法头 和一个 方法体

  • 修饰符:(此为可选项)告诉编译器如何调用该方法,定义了该方法的使用类型。eg:(public;static 等,修饰符位置可任意调换)
  • 返回值类型:方法可能会返回 。returnValueType 是方法返回值的数据类型。
    有些方法执行所需的操作,返回一个语句,此时,returnValueType 是关键字 void
  • 方法名:是方法的实际名称,方法名参数表 共同构成方法签名。
  • 参数类型:形参。当方法被调用时,传递值给参数,这个值被称为 实参 或者变量,
    参数列表是指方法的 参数类型顺序参数个数 。参数是可选的,方法可以不包括任何参数。
    ① 形式参数:在方法被调用时用于接收外界输入的数据。
    ② 实参:调用方法时实际传递给方法的数据。
  • 方法体:方法体包含具体的语句,定义该方法的功能。

方法的调用

  • 调用方法:对象名.方法名(实参列表)
  • Java支持两种调用方法的方式,①返回值;②返回语句。
    1)当方法返回一个值的时候,方法调用通常被当作一个值。如:
    int larger = max(30,40);
    2)如果方法的返回值是void,方法调用一定是一条语句。
    System.out.println("Hello World!");

值传递 和 引用传递。###

(1)值传递(Java)

(2)引用传递

2. 方法重载

重载的定义

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

重载的规则

方法名称必须相同。
参数列表必须不同(如个数不同,类型不同,参数排列顺序不同等)
方法的返回类型可以相同也可以不同。
仅仅返回类型不同不足以成为方法重载。

实现理论

方法名称相同时,编译器会根据调用方法的 参数个数参数类型 等去逐个匹配,
以此选择对应的方法,如果匹配失败,则编译器报错。
代码示例:

public class Demo01 {
    //main 方法
    public static void main(String[] args) {

        int max = max(10,20);
        System.out.println(max);

        double max1 = max(10,20);
        System.out.println(max1);
    }
    //比大小 int 类型。
    public static int max(int num1,int num2){

        int result = 0;

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

    //比大小 方法重载 double类型
    public static double max(double num1,double num2){

        double result = 0;

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

输出结果如下:

可以看见,调用的方法名相同,
但为重载方法,因而输出的数据类型不同

3. 命令行传参

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

使用IDEA 进行 main()方法传参

在main()方法中编写 遍历参数。
代码如下:

package method;

public class Demo02 {
    public static void main(String[] args) {
        //args.Length 数组长度
        for (int i = 0;i < args.length;i++){
            System.out.println("args[" + i + "]" + args[i]);
        }
    }
}

使用自带的 terminal 功能 输出如下:

可以看见无法执行,下面使用命令行传参。

使用命令行和 main()方法 传递参数

代码文件已经编写如上。
(1)在 method包 中调用 cmd 编译类方法 并运行编译结果(java文件)。
发现无法运行编译结果。如图:

(2)后退到scr文件中(使用cd ../),执行所编译的文件。
注意此时要补全路径。
可以看见,执行顺利,但是无输出,因为没有输入参数。

(3)赋予 main()方法参数:“this is zfy"
可以看见,按照设想输出了参数遍历。

(4)完整cmd窗格如下所示:

4. 可变参数

可变参数的定义

  • Java支持传递同类型的可变参数给一个方法。
  • 一个方法中能且仅能指定一个可变参数,它必须为所示方法的最后一个参数。
  • 在方法声明中,在指定参数类型后加一个省略号(...)。
    形如:test(double x; int... i),此处int i 为可变参数,可以接收任意数量的i。
    代码示例:
package method;
public class Demo03 {
    public static void main(String[] args) {
        //使用new方法新建一个类;
        Demo03 demo03 = new Demo03();
        demo03.test(1,2,1,21,7,5458,9);
    }
    public void test(double x , int... i){
        System.out.println(i[0]);
        System.out.println(i[1]);
        System.out.println(i[2]);
        System.out.println(i[3]);
        System.out.println(i[4]);
        System.out.println(i[5]);
        System.out.println(x);
    }
}

结果如下:

5. 递归

定义:
所谓递归,即方法循环调用(执行)自己若干次。
也可以理解为多层(自)嵌套结构。
作用:
递归有时可以用简单的程序解决复杂问题,通过将大型的复杂问题层层转化为与原问题原理相似的较小规模问题来求解。
其本质是多次简单重复计算的堆叠。因此肯能存在内存溢出的问题。
结构:
①递归头:即循环结束的条件。
②递归体:即循环继续的条件。

下面以f=n!为例展示简单的递归。
代码示例:

package method;

public class Demo05 {
    public static void main(String[] args) {
        System.out.println(f(6));
    }
    public static int f(int n){
        if (n==1){
            return 1;
        }else{
            return n*f(n-1);
        }
    }

结果为:

posted @   青梧成林2022  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示