方法【贰】—— 重载
假设要在一个程序中实现一个对数字要求和的方法,由于参与求和数字的个数和类型都不确定,因此要针对不同的情况设计不同的方法。
定义
方法名相同,参数个数或类型不同
注意事项
构造方法不可以重写但可以重载
重载方法参数必须不同
参数个数不同
如method(int x)与method(int x,int y)不同
参数类型不同
如method(int x)与method(double x)不同
参数顺序不同
如method(int x,double y)与method(double x,int y)不同
无公共参数,不是重载
public static void f1(int x){
}
public static int f1(int y){
}
public static void f1(int y){
}
方法名与参数类型相关与返回值无关
如void method(int x)与int method(int y)不是方法重载,不能同时存在
重载与具体的变量标识符无关
如method(int x)与method(int y)不是方法重载,不能同时存在
参数传递
调用一个方法时,会把指定数值,传递给方法中的参数,这样方法中的参数就拥有了指定的值,可以使用该值,这种传递方式成为参数传递。
形式参数
定义方法时,参数列表种的变量
实际参数
调用方法时,传入给定方法的数值
package com.xyz.www;
public class Demo01 {
public static void main(String[] args) {
int a = 5;
int b = 10;
// 调用方法时,传入的数值称为实际参数
change(a, b);
System.out.println("a=" + a);
System.out.println("b=" + b);
}
// 方法
public static void change(int a, int b) {
a = 200;
b = 500;
}
}
程序的运行结果如下:
public class Demo02 {
public static void main(String[] args) {
int[] arr = { 1, 2, 3 };
change(arr); // 调用方法时,传入的数之称为实际参数
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]); //2 4 5
}
}
public static void change(int[] arr) {
for (int i = 0; i < arr.length; i++) {
arr[i] *= 2;
}
}
}
程序的运行结果如下:
参数传递图解与结论
通过上面的两段程序可以得出如下结论:
○ 当调用方法时,如果传入的数值为基本数据类型(包含String类型),形式参数的改变对实际参数不影响
○ 当调用方法时,如果传入的数值为引用数据类型(String类型除外),形式参数的改变对实际参数有影响