一,动态绑定与静态绑定java
动态绑定:动态绑定的缘由是重写,在编译期间不知道要调用哪一个类的方法,绑定被推迟到运行时。数组
静态绑定:static,final和private方法的绑定始终是静态绑定。code
二,可变参数索引
public class MyTest{ public static void main(String[] args) { int a = 100; varArgMethod(5, 7,8,9,10,a); } public static void varArgMethod(int b,int... arr) { //索引遍历 for(int i=0;i<arr.length;i++) { System.out.println(arr[i]); } } }
反编译class文件:编译器
public class MyTest { public static void main(String args[]) { int a = 100; varArgMethod(5, new int[]{7, 8, 9, 10, a});//参数列表被编译器处理成了一个int[]数组 } public static transient void varArgMethod(int b, int arr[]) { //形参被编译器处理成数组 for (int i = 0; i < arr.length; i++) System.out.println(arr[i]); } }
能够看到编译器将可变参数处理成了数组。编译