内容有方法的使用,重载,签名
1. 方法
在java中,没有声明.
普通局部变量是存放在栈区的,在java中,不能直接取到栈区的地址,只能取到堆区的变量的地址,因此要取地址时,需要先将栈区的变量转到堆区中(数组变量是存放在堆区的)
2. 方法重载
- 两个方法名称一样(编译器是允许两个方法名一样的)
- 方法的参数不一样(参数类型,个数,顺序)
- 返回值没有要求(可以一样也可以不一样)
- 编译器在编代码时,会对实参类型进行推演,根据推演的结果来确定调用哪个方法
方法名一致,编译器如何区别,看下面的方法签名
注意:
当两个方法仅仅是返回类型不一样时,是无法构成重载的
public class Test {
public static int add(int x, int y){
return x + y;
}
public static float add(float a, float b){
return a + b;
}
public static void main(String[] args) {
System.out.println(add(1, 3));
System.out.println(add(2.9f, 3.5f));
}
}
3. 方法签名
什么是方法签名
在同一个作用域中不能定义两个相同的标识符,比如:方法中不能定义两个名字一样的变量,但为什么类中就可以定义方法名相同的方法呢?
方法签名:经过编译器编译修改过之后方法最终的名字.具体方式:方法全路径名+参数类别+返回值类型,构成方法完整的名字
如何得到方法签名
上面的代码经过编译之后,使用jdk自带的javap反汇编工具查看,具体操作:
- 先对工程进行编译生成.class字节码文件
- 在控制台中进入到要查看的.class所在目录
- 输入:javap-v字节码文件名即可
Test.add为方法路径,(II)为参数类别,I为返回值类型