方法的重载
package com.study.method;
public class Demo02 {
public static void main(String[] args) {
//方法有返回值时,通常被作为一个值
//方法返回值是void时,方法调用一定是一条语句
int max=max(2,3);
System.out.println("较大的数是:"+max);
}
//比大小
public static int max(int a, int b) {
//一般将return放在最后写,所以可以定义一个变量存放要返回的值
int result = 0;
if (a == b) {
System.out.println("两个数值相等!");
return 0; //return不仅可以返回返回值,而且遇到return还会终止方法
}
if (a > b) {
result = a;
} else if (a < b) {
result = b;
}
return result;
}
}
上面使用的max方法仅仅适用于int型数据。但如果你想得到两个浮点类型数据的最大值呢?
解决方法是创建另一个有相同名字但参数不同的方法,如下面代码所示:
public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}
如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;
如果传递的是double型参数,则double类型的max方法体会被调用,这叫做方法重载;
就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。
Java编译器根据方法签名判断哪个方法应该被调用。
方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。
重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。
总结方法的重载的规则:
- 方法名必须相同
- 参数列表必须不一样
- 方法的返回类型可以相同也可以不同
- 仅仅返回类型不同不足以成为方法的重载
实现理论:
- 方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
命令行传参
有时候你希望运行一个程序时候再传递给它消息。这要靠传递命令行参数给main()函数实现。
命令行参数是在执行程序时候紧跟在程序名字后面的信息。
可变参数
可变参数本质是数组。在形参里面定义只能放在最后面。
package com.study.method;
public class Demo04 {
public static void main(String[] args) {
Demo04 demo04 = new Demo04();
demo04.test(111,1,2,3);
}
public void test(int x,int... i){
System.out.println(x);
System.out.println(i[0]);
System.out.println(i[1]);
System.out.println(i[2]);
}
}