初学者学Java(六)

来源:互联网 发布:vim for mac os x 编辑:程序博客网 时间:2024/05/01 12:05

          详解方法参数传递和方法重载

这篇我讲一下Java中两个比较重要的两个知识点:方法的参数传递和方法的重载。

                                 1.方法参数传递

对于Java中的方法参数传递,无论是原生数据类型还是引用类型,统一是传值,Java中没有传引用的概念。

只不过引用类型变量保存的值比较特殊,是他所指向的对象的地址,所以可以修改形参的值可以修改对象的属性,因为形参所接受的值是其的地址。

例:

public class A

{

int age;

public void addAge(A a)

{

this.age++;

a.age++;

}

public void doNotAddAge(int a)

       {

a++;

}

public static void main(String[] args) 

{

A a = new A();

a.addAge(a);

a.doNotAddAge(a.age);

System.out.println(a.age);

}

}

这个程序的最终结果是2,我们来分析一下:

A a= new A();

这条语句只是在内存中new了一个A的新对象,并把这个对象的引用赋给了a

a.addAge(a);

这条语句调用了类A的一个方法addAge(A a);这个方法是把实参a中保存的引用地址的值赋给形参a,此时形参a和实参a指向同一个对象。

所以此时this.age++;a.agg++会使此对象的age属性加2

a.doNotAddAge(a.age);

这条语句调用了类A的一个方法doNotAddAge(int a);这个方法是把实参a指向的对象的age属性赋给了形参a,而a++只是修改了a的值,并不会影响对象的age属性。

所以输出时a.age 的值为2

分析到这里应该对方法的参数传递有一定的了解了吧,下面我们讲方法的重载。

                  方法的重载

方法重载是指两个或多个方法的名字相同,但方法参数不同。
方法的参数不同1有两层含义:
1.参数的类型不同。
2.参数的个数不同。
我看有的参考书上还写上了参数的排列顺序,我觉得参数的排列顺序不同属于参数的类型不同。
还有一点很重要就是:方法的返回值对方法的重载没有任何的影响。普通方法和构造方法都可以进行重载,但main()方法不可以。
关于方法的重载我个人认为,你的程序只要让系统在调用你的方法时知道该调用哪一个,哪就是合法的。如果产生了分歧,就是非法的。关于重载我就说这么多吧。


原创粉丝点击