13.Java中参数传值机制

1. 传值机制

  • Java中,方法中所有参数都是“值传递”,也就是“传递的只是值的副本”。也就是说,我们得到的是“原参数的复印件,而不是原件”。因此,复印件不会影响原件
  • 引用值类型参数的传值:传递的是值的副本但是引用类型传的是“对象的地址”。因此副本和参数都指向了同一个“地址”,改变“副本指向地址对象的值,也意味着原参数指向对象的值也发生了改变”。

2. 代码解释:

public class User4 {
    int id;
    String name;
    String pwd;
    
    public User4(int id,String name) {
        // TODO Auto-generated constructor stub
        this.id=id;
        this.name=name;
    }
    
    public void testParameterTransfer01(User4 u){
        u.name="高小八";
    }
    
    public void testParameterTransfer02(User4 u){
        u = new User4(200,"高三");  //不是将之前u1的数据修改了,而是自己新创建了一个内存块的区域
        System.out.println(u);     //堆中重新创建了一个方法区 @u=7852e922
        System.out.println(u.name);
        System.out.println(u.id);
    }
    
    public static void main(String[] args) {
        User4 u1=new User4(100,"高小七");
        System.out.println(u1); //方法区 @u1=4e25154f
        
        u1.testParameterTransfer01(u1);
        System.out.println(u1.name); //传值被修改成八,所以输出原样
        System.out.println(u1.id);   //传递了100
        
        u1.testParameterTransfer02(u1);
        System.out.println(u1.name); 
        System.out.println(u1.id); 
    }

}

输出结果;
                User4@7852e922
                高小八
                100

                User4@4e25154f
                高三
                200

                高小八
                100

执行过程:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容