
方法重载什么是方法重载,方法重载有什么要求;方法重载必须是在同一个类中,方法名必须相同,参数列表必须互不相同,这种自动匹配对应的方法执行机制就叫方法重载void meth(int ... vars)和 void meth(String ... vars)属于方法重载,但是当我们调用meth()方法的时候编译器会报错,原因是对meth方法的引用不明确,这里需要注意方法传参基本类型传数值副本改参不改原引用类型传地址副本改堆里对象内容生效换地址不生效public static void main(String[] args) { int a2; int [] arr new int[2]; add(a); add1(arr); add2(arr); System.out.println(a);//2 System.out.println(arr);//[Ib4c966a System.out.println(arr[0]);//30 } public static void add(int i) { i10;//修改的是拷贝的数值副本 } public static void add1(int[] i) { inew int[3];//修改的是拷贝的地址副本 } public static void add2(int[] i) { i[0]30;//修改的是拷贝地址副本指向的真实地址的值 } --------------------------------------------------- //上面理解不了的可以先看看下面的代码 int b 666; int tb; t10; System.out.println(b);//666 int[] arr1 new int[2]; int[] arr2 arr1; arr2new int[3]; System.out.println(arr1);//[I2f4d3709 int[] arr3 new int[2]; int[] arr4 arr3; arr4[0]888; System.out.println(arr3[0]);//888 /** * 基本数据类型 变量b对应什么,引用类型变量arr2对应什么 思考 * 实际上当我们将一个变量(实参)传给方法时,我们可以用sout打印一下,打印语句输出的是什么我们传递的就是个什么东西 * 当我们传递基本数据类型的时候meth(a),传递的是变量a中保存的值2 * 当我们传递引用类型的时候meth(arr),传递的是变量arr中保存的值[I2f4d3709 * 操作传递的2字面量本身没有特别的意义,操作传递arr变量中保存的地址也没有意义,操作传递arr变量中保存的地址指向的数据才有意义 */Java 永远只有值传递不存在引用传递关键字staticstatic属于类本身,不属于任何对象实例,static修饰的在类加载时就初始化,优先于一切对象存在,全局唯一,所有对象共享一份静态资源修饰成员变量: 类加载阶段就初始化,早于new对象,生命周期是随类一起加载,程序结束才销毁修饰方法: 被修饰的方法中不能出现this,super等关键字,静态方法只能访问静态成员和静态方法,而且静态方法不能被重写(Override)修饰代码块: 类加载时执行唯一一次修饰内部类: 内部类不依赖外部实例,可直接 外部类.静态内部类 创建关键字finalfinal代表(不可修改,不可变更),可以修饰变量,方法,类三类元素,每一类约束完全不同修饰普通局部变量: 只能赋值一次,一旦赋值就不能修改修饰成员变量: 必须保证在对象创建完毕前完成唯一一次赋值修饰静态成员变量: 类加载是就要赋值,只能赋值一次修饰形参: 方法内部不允许重新给形参赋值修饰方法: 该方法不能被重写修饰类: 该类不能被继承,没有任何的子类