一、什么是方法重载
1、定义: 在Java程序中,同一个类可以有两个或者多个方法名字相同,只要参数不同即可,则称为方法的重载。
注意:
1) 必须是在同一个类中
2) 方法名相同
3) 方法参数的个数、顺序或类型不同
4) 与方法的修饰符或返回值没有关系
2、如何区分调用哪个方法
当调用被重载的方法时, Java 会根据参数的个数和类型来判断应该调用哪个重载方法,参数完全匹配的方法将被执行
备注: OC语言是没有方法重载一说的,因为同一个类里面不允许出现相同方法名的方法。
例如:
- (void)test:(int)number;
- (void)test:(float)number;
这样编译是不允许通过的,因为可以看出OC可以通过参数个数实现函数重载的。
3、主函数可以被重载么 ?
主函数 : 是一个特殊的函数,是固定格式的,作为程序入口,可以被jvm识别。
public static void main(String[] args){
}
/*
main 不是关键字,是特殊的一个单词而已,能够被jvm识别。
主函数当然是可以被重载,但是即使重载了,Jvm还是会识别到真正的主函数。
JVM 在调用 main 函数是,传入的是new String[0];
那么如何验证呢 ?
class MainDemo{
public static void main(String[] args){
// 调用 MainTest 的主函数
String[] arr = {"1","2"};
MainTest.main(arr);
}
}
class MainTest{
public static void main(String[] args){
for(String value : args){
system.out.println(value);
}
}
}
*/
二、方法重载的一些例子
创建一个类文件,命名为MethodOverLoad,并勾选入口函数。演示print方法重载。
1、定义一个无参无返回值的print方法
public void print(){
System.out.println("无参的print方法");
}
2、定义一个有参数无返回值的print方法
public void print(int age,String name){
System.out.println("age:"+age);
System.out.println("name:"+name);
}
3、定义一个有参数有返回值的print方法
public void print(int age,String name){
System.out.println("age:"+age);
System.out.println("name:"+name);
}
4、定义一个有参数有返回值的print方法
public void print(String name,int age){
System.out.println("age:"+age);
System.out.println("name:"+name);
}
在入口函数函数中调用如下:
public static void main(String[] args) {
MethodOverLoad hello = new MethodOverLoad();
hello.print();
hello.print(12, "jack");
System.out.println();
hello.print("rose", 23);
}
输出结果:
无参的print方法
age:12
name:jack
age:23
name:rose
三、随机数
1、通过 (int)(Math.random() * 100) 生成 100 以内的随机数
2、Math 类是用于进行算术操作的类,Math.random() 生成 0–1 的浮点数。
需求:编写一个JAVA程序,创建指定长度的 int 型数组,并生成 100 以内随机数为数组中的每个元素赋值,然后输出数组。
实现:
自定义方法如下
public int[] getRandomNumver(int length){
int[] numbers = new int[length];
for(int i = 0;i < length;i++){
numbers[i] = (int)(Math.random()*100);
}
return numbers;
}
函数入口调用
public static void main(String[] args) {
MethodPartise hello = new MethodPartise();
int[] nums = hello.getRandomNumver(5);
System.out.println(Arrays.toString(nums));
}
输出结果:
[33, 28, 31, 40, 26]