6.3 方法的重载

  • 重载就是在一个类中,有相同的 函数名称,但参数不同的函数。
  • 方法的重载规则:
  1. 方法名称必须相同
  2. 参数列表必须不同(个数不同、类型不同、参数排列顺序可以不同等)
  3. 方法的返回类型可以相同也可以不相同
  4. 仅仅返回类型,是不足以 实现方法的重载的!
  • 实现理论:

方法形成相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器会报错。

package method;

public class 方法的重载 {
    public static void main(String[] args) {
        System.out.println(max(1,10));
        System.out.println(max(10.2,10.1));
    }
    //比大小
    /*修饰符*/public static /*返回值类型*/double /*方法名*/max(double a/*整数参数①*/,double b/*整数参数②*/)
    {
        /*方法体*/
        if(a==b)
        {
            System.out.println(a+"=="+b);
            return a;
        }
        if(a>b)
            return a;
        else return b;
    }
    
    //比大小
    /*修饰符*/public static /*返回值类型*/int /*方法名*/max(int a/*整数参数①*/,int b/*整数参数②*/)
    {
        /*方法体*/
        if(a==b)
        {
            System.out.println(a+"=="+b);
            return a;
        }
        if(a>b)
            return a;
        else return b;
    }
}

java传多个String参数 java 传参数_System


你会发现,当我们 输入 10.1 和 10.2 的时候,它会自动识别到 max 的 double 重载!

6.4 命令行传参

我们可能从一开始 就对 public static void main(String[] args) 这里的参数 产生疑惑!这个参数是干什么的呢??

  • 有时候你希望运行一个程序的时候,去传递给它(程序)一些信息。这要靠传递命令行参数 才能够办到!
package method;

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

java传多个String参数 java 传参数_System_02

java传多个String参数 java 传参数_数组_03


用命令行执行 java程序的注意事项:

当你 创建了 包以后,一定要注意,先把 文件位置 退回到 src 下,然后 输入 包名.程序名 才能够 执行程序!!

java传多个String参数 java 传参数_java_04


你会发现 这里 就会把 用命令行 传递 给程序的参数信息,都打印出来了。

6.5 可变参数

  • JDK 1.5 开始,Java 支持传递同类型的可变参数。
  • 在方法声明中,在指定参数类型后加一个省略号(…)
  • 一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何的普通参数必须在它之前声明!!!

说白了,就是 你的这个方法,不确定 需要 几个同类型的参数数据!所以这个 时候就有一个东西,叫 可变参数,原型其实 是 数组!!

  • 在展示和举例可变参数之前,我们还要学会 如何调用 非 static 的方法!

如果不是 static 修饰过的方法,那么 就 需要 具象化 一个 对象!然后让这个 对象 去 调用这个方法就可以了。(原因 是 非 static 属于 对象,而不属于 整个类!

  • 可变参数的举例和展示
package method;

public class 可变参数 {
    public static void main(String[] args) {
        可变参数 demo = new 可变参数();//先 具象化 为 对象

        demo.max(54,0,21,-2,10,9,-5,8);//用 demo 对象 调用 max  方法

    }

    public void max(int... nums)//这个 int... nums 就是可变参数,可以接收任意个 该类型的数据
    {
        int max_num = nums[0];
        for(int i =0;i<nums.length;++i)
        {
            if(nums[i] > max_num)
                max_num = nums[i];
        }
        System.out.println(max_num);
    }
}

java传多个String参数 java 传参数_java_05

  • 因为 可变参数的 本质 是 数组,只是换了一种 形式。所以我们提供多个同类型数据的时候,可以提供临时数组。
demo.max(new int[]{-2,1,0,8,90,60,2,3});
//new int[] {元素数据}; 这个就叫做 临时 数组,临时创建 临时 销毁!

java传多个String参数 java 传参数_数组_06

可变参数并不是没有用 ! 大家千万别记完就忘。这个东西的出现,也是为了方便 我们提供一整串数据 对其进行处理的。

你想一下这种情况,比如你现在直接有 一组 数据,用逗号隔开的,然后你直接 就要拿过来出来,不想自己再进行 数据封装成数组的操作。

那么可变参数不就方便多了。你直接输入进去,然后在方法里,自然就是一个数组。但是有些人可能就又说了,那我参数定义一个 数组类型,用 {一串数据} 提供进去 不也行吗?那要这样说 也没毛病。但是新特性 有 新特性的好处。别不当回事就行。

本来就是解决一种问题,方案可以很多。所以不需要纠结的。