方法重载
类似于自然语言的一词多义,当JAVA中出现多个方法名相同,但参数名不同的方法时,称为方法重载
一个简单的例子:
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
public static double add(double x, double y, double z) {
return x + y + z;
}
该三个方法名相同,但是形式参数不同,当我们使用时,编译器会对实参类型进行推演,根据推演的结果去确定用哪个方法。
使用方法:
add(x:5,y:6);
add(x:5.0,y:6.0);
add(x:5.0,y:6.0,z:7.0);
编译器会根据实参自动识别使用哪个方法。
注意:
- 方法名必须相同
- 参数列表必须不同(参数的个数不同、参数的类型不同、类型的次序必须不同)
- 与返回值类型是否相同无关
在同一个作用域中不能定义两个相同名称的标识符。比如:方法中不能定义两个名字一样的变量,那为什么类中就可以定义方法名相同的方法呢?
这需要引申到方法签名的知识
方法签名
方法签名可以理解为:编译器对方法名修改之后的最终名字,具体方式:方法全路径名+参数列表+返回值类型,构成方法完整的名字。
例如一下代码
public static int add(int x, int y) {
return x + y;
}
public static double add(double x, double y) {
return x + y;
}
我们可以用反汇编工具查看这两个方法的最终方法名:
数组
数组的创建
元素类型[] 数组名 = new 元素类型[];
eg.
int[] arr = new int[10];创建了一个容纳十个int的数组
数组初始化
有两种初始化:
1.静态初始化(不指定数组长度)
int[] arr=new int[]{1,2,3}; 不指定数组长度,但编译器会根据{}内的元素个数来确定
int[] arr={1,2,3}; 这种写法也可以,省略了new int[],但其实编译器会自动加上去
2.动态初始化(直接指定数组长度)
int[] arr = new int[10];
注意:以下的错误不能犯
例如:
int[] arr = new int[3]{1,2,3}; 这种编译器会报错,因为你直接赋值了就不能写数组长度,给了数组长度
就不能自己赋值
还有
int[10] arr = new int[]; 这种写法也是错的,指定长度必须在后面的括号
还有,你也可以这样分开写
int[] arr;
arr=new int[10];
还有一点值得注意:
int[] arr;
arr = new int[]{1,3,4};
arr = new int[]{6,7,8};
这样1,3,4会被6,7,8覆盖
类似于整体修改数组里的元素
也可以单独修改
arr[0]=1;
将第一个元素改为1
此外,和C语言一样,JAVA的元素也是用下标引用的,0下标是第一个元素