当前位置: 首页 > 编程语言 > Java > 正文

Java编程那些事儿55—方法重载和参数传递

时间:2010-03-11 陈跃峰

7.5 方法相同

在Java语言中,方法相同的概念和其它程序设计语言不尽相同,Java语言中的方法相同指方法名称和参数列表都相同,其中参数列表相同指参数个数、参数类型和参数排列顺序等相同,参数名称可以不相同。相同的方法访问控制符、返回值类型可以不相同。

以下是一下相同的方法:

public void test(int a,double[] d)
private int test(int i,double[] d1)

在同一个类内部,不能声明相同的方法,否则将出现语法错误。

7.6 方法重载

方法重载(overload)是一种语法现象,指在一个类内部出现了多个方法名相同,但是参数列表不同的方法。

方法重载的作用是将功能相同,但是参数列表不同的方法采用相同的方法名称,便于程序员使用。根据方法相同的概念,重载的方法都是不相同的方法。

在Java提供的API中,大量应用重载的概念,方便程序员对于系统功能方法的实际使用。

恰当的使用重载,可以增强代码的可维护性。

以下是方法重载的示例:

public void a(int a){}
public int a(){}
public void a(int a,String s){}

在以上示例方法中,方法的名称都是a,而参数列表却各不相同,这些方法实现了重载的概念。但是仔细观察可以发现,这些重载的方法的返回值不尽相同,因为返回值类型和方法的重载无关。

通常情况下,重载的方法在访问控制符、修饰符和返回值类型上都保持相同,这个不是语法的要求,只是将这些制作成一致以后,便于实际使用。

7.7 参数传递

在方法调用时,需要根据方法声明传入适当的参数,通过每次调用方法时传参,极大的增强了方法的统一性,避免了方法内部功能代码的重复。但是在实际传递参数时,如果在方法内部修改了参数的值,则调用时使用的变量是否发生改变呢?

例如如下代码:

/**
* 参数传递代码示例
*/
public class TransferValueDemo {
public static void main(String[] args) {
 int m = 10;
 int[] a = {1,2,34};
 test(m,a);
 System.out.println(m);
 System.out.println(a[0]);
}
public static void test(int n,int[] t){
 n = 0;
 t[0] = 123;
}}

则执行该程序以后,程序的输出结果是:10 123。则在调用test方法时,同样都是传入参数,为什么变量m的值未改变,而a[0]的值发生了改变呢?下面就来说明该问题。