解读Java参数传递

2018-07-05  本文已影响0人  Wangheguan

Java语言的传递方式只有“按值传递”!“按值传递”! “按值传递”!重要的事情要说三遍。
不过呢,按值传递可能还不够确切,“按副本传递”会更好理解。


实验一、

public class test
{
    public static void main(String args[]){
        Person p1 = new Person();
        System.out.println("变量p1中保存的值为:"+p1);
        p1.setName("jack");
        System.out.println(p1.getName());
        change1(p1);
        System.out.println(p1.getName());
    }

    public static void change1(Person p2) {
         System.out.println("变量p2中保存的值为:"+p2);
         p2 = new Person();
         System.out.println("变量p2中保存的值为:"+p2);
         p2.setName("rose");
     }
}

class Person {
    private String name;
    public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
 }

实验结果:


实验一结果

分析:

实验二、

public class test
{
    public static void main(String args[]){
        Person p1 = new Person();
        System.out.println("变量p1中保存的值为:"+p1);
        p1.setName("jack");
        System.out.println(p1.getName());
        change2(p1);
        System.out.println(p1.getName());
    }

     public static void change2(Person p3) {
         System.out.println("变量p3中保存的值为:"+p3);
         p3.setName("rose");
     }
}

class Person {
    private String name;
    public void setName(String n){
        name = n;
    }
    public String getName(){
        return name;
    }
 }

实验结果:


实验二结果

分析:

对于基本类型的参数传递就比较简单了:

public class test {
     public static void main(String[] args) {
        int num = 30;
        System.out.println("调用add方法前num=" + num);
        add(num);
        System.out.println("调用add方法后num=" + num);
     }
  
     public static void add(int param) {
       param = 100; }
}  

实验结果:
调用add方法前num=30
调用add方法后num=30
分析:

上一篇下一篇

猜你喜欢

热点阅读