08_Java方法

本文详细介绍了Java中的方法,包括方法的定义、调用方式、方法重载的概念以及如何在类中定义构造方法。通过示例代码解释了如何寻找数组中的最大值、如何实现方法重载以及构造方法在对象创建时的角色。此外,还提到了变量的作用域、命令行参数的使用以及构造方法在初始化对象时的重要性。
摘要由CSDN通过智能技术生成

Java 方法

方法其实就是函数,就是将一段代码语句组合在一起实现一个功能,这样使得程序变得简短而清晰,有利于维护,可以提高程序的开发效率,提高代码的重用性和可读性。

方法的定义

语法:

修饰符 返回值类型 方法名(参数类型 参数名){
  方法体
  return 返回值
}
  • 修饰符 可选,告诉编译器如何调用这个方法。
  • 返回值类型 类似于 TypeScript,void 表示没有返回值,其他的对应方法的返回值的类型。
  • 方法名 方法的实际名称。
  • 参数类型和参数名 类似于 TypeScript 中的形参。
  • 方法体 方法的具体代码,定义了该方法实际做的事儿。
    例子:定义一个找数组中最大值的方法
public class Methods {
    public static int getMaxValueFn(int[] arr) {
        int maxValue = arr[0];
        for (int num : arr) {
            if (num > maxValue) {
                maxValue = num;
            }
        }
        return maxValue;
    }
}
public class Funcs {
    public static void main(String[] args) {
        int[] arr = { 1, 5, 9, 5, 23, 65, 4 };
        int maxValue = Methods.getMaxValueFn(arr);
        System.out.println(maxValue); // 65
    }
}
方法的调用

在上个例子中其实已经有做方法的调用:
和大多数编程语言一样,调用方法就是直接在方法名后面加小括号,如果方法有定义参数,直接在小括号中传入对应的参数,如果方法有返回值,也可以定义一个相应类型的变量来接收返回值。

方法的重载

java 允许在一个类中定义多个名称相同,但是参数的类型或者个数不相同的方法。
比如:我们在一个类中定义 add 静态方法,但我们需要让字符串相加,有时候也需要 int 类型的数字相加,这是我们就可以用重载来声明两个名称相同的的不同方法:

public class Mthods {
    public static int getMaxValueFn(int[] arr) {
        int maxValue = arr[0];
        for (int num : arr) {
            if (num > maxValue) {
                maxValue = num;
            }
        }
        return maxValue;
    }

    public static int add(int a, int b) {
        System.out.println("Int Add fn called");
        return a + b;
    }

    public static String add(String a, String b) {
        System.out.println("String Add fn called");
        return a + b;
    }
}
public class Funcs {
    public static void main(String[] args) {
        int[] arr = { 1, 5, 9, 5, 23, 65, 4 };
        int maxValue = Mthods.getMaxValueFn(arr);
        System.out.println(maxValue); // 65
        // 测试方法重载
        int num1 = 10, num2 = 11;
        System.out.println(Mthods.add(num1, num2)); // 21
        System.out.println(Mthods.add("abc", "def")); // abcdef
    }
}

因此:Java 程序中确定一个方法需要的三个要素:

  1. 调用者:就是方法的所属者,可以是类或者是对象;
  2. 方法名:方法的标识;
  3. 形参列表:当调用方法时,系统将会根据传入的实参列表匹配。
    重载方法的要求是两同一不同:即同一个类中方法名相同,参数列表不同。至于方法 de 的其他部分,如方法返回值类型、修饰符等,与方法重载没有任何关系。
变量的作用域

和其他编程语言的作用域定义相同:变量的作用域就是就是程序中变量可以被引用(访问)的部分。
方法内定义的变量被称为局部变量,局部变量的作用范围从声明处开始,知道包含他的代码块结束。方法的参数实际上也可以理解为方法内部的局部变量。for 循环初始化部分声明的变量,其作用范围在整循环,但是循环体内定义的变量值在档次循环中有效。

命令行参数

之前一直在定义 main 方法,没有介绍 main 方法的参数,其实一个 java 程序的 main 方法的参数就是在运行程序的时候后命令行参数:

public class CommandArgs {
    public static void main(String args[]){
       for(int i=0; i<args.length; i++){
          System.out.println("args[" + i + "]: " + args[i]);
       }
    }
}

然后如果通过如下命令运行这个程序:

java CommandArgs arg1 arg2

传入的arg1和arg2参数会以字符串数组项的形式传递给main方法。

构造方法
  • 当一个对象被创建的时候(new一个class),构造方法用来初始化该对象。构造方法和他所在的类名字相同,但构造方法没有返回值(也不能用void去修饰构造方法的返回值)。
  • 我们通常会使用构造方法给新建的类的实例变量赋值,或者执行其他必要的步骤来创建一个完整的对象。
  • 如果我们没有在类中定义构造方法,java也会提供默认的构造方法,因此用new操作符创建对象的时候一定会执行类的构造方法。(默认构造方法的访问修饰符和类的访问修饰符相同)
public class ConstructFn {
    String name;
    int age;

    public ConstructFn(String name) {
        System.out.println("Construtor Called"); //Construtor Called
        this.name = name;
        this.age = 18;
    }

    public static void main(String[] args) {
        ConstructFn test = new ConstructFn("ConstructorName");
        System.out.println(test.name); // ConstructorName
        System.out.println(test.age); // 18
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值