当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>Java入门

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

    Java编程那些事儿系列文章(全集目录)

    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]的值发生了改变呢?下面就来说明该问题。

    在参数传递时,一般存在两种参数传递的规则,在Java语言中也是这样,这两种方式依次是:

    l 按值传递(by value)

    按值传递指每次传递参数时,把参数的原始数值拷贝一份新的,把新拷贝出来的数值传递到方法内部,在方法内部修改时,则修改的时拷贝出来的值,而原始的值不发生改变。

    说明:使用该方式传递的参数,参数原始的值不发生改变。

    l 按址传递(by address)

    按址传递指每次传递参数时,把参数在内存中的存储地址传递到方法内部,在方法内部通过存储地址改变对应存储区域的内容。由于在内存中固定地址的值只有一个,所以当方法内部修改了参数的值以后,参数原始的值发生改变。

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接