JAVA 参数传递机制 值传递 or 引用传递

本文详细探讨了Java中参数传递的两种方式:基本类型的值传递和对象的引用传递,并通过实例演示了这两种传递方式的区别及影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    Java的参数传递机制是在Java中一个比较烦的问题,一般人都不太会注意,但要详细的解释一下其机制的话还是有很多人说不上来。其实我也是,所以就查了点相关资料并且记录下来,好好理解Java的参数传递。

        对于参数传递主要可分为几类:1、Java的基本类型作为参数传递时,主要是传递值的拷贝。所以不能改变原值。2、Java的对象作为参数传递时,是引用传递,把对象在内存中的地址拷贝传递给参数。

        下面举个例子来简单说明(例子是网上找的,呵呵!)

public class PersonT {
	
	public void change(Person p) {   
         p.name = "mary";   
         p.age = 20;   
     }

     public void changeInt(int i) {   
         i = 8;   
     }
     
     public void change1(Person p){   
        p = new Person("tom",22);   
     }
     
     public static void main(String[] args) {
    	 
         PersonT t = new PersonT();
         Person p = new Person("john", 18);
         
         Person p1 = p;
         System.out.println(p);
         
         t.change(p1);   
         System.out.println(p1);   
         System.out.println("传回来的值指向是否一致:" + p.equals(p1));
         
         int i = 10;   
         System.out.println("i值为:" + i);
         t.changeInt(i);
         System.out.println("i值为:" + i);
         t.change1(p);
         System.out.println(p);
         
     }
     
 }   

 输出结果为:

姓名:john 年龄:18
姓名:mary 年龄:20
传回来的值指向是否一致:true
i值为:10
i值为:10
姓名:mary 年龄:20

 

    由上面的例子可知:对于Java来说值传递所传递的是原值的备份,所以对其修改以后原值还是没有变化,而引用传递,则是传递对象的地址,所以即使是对象内容改变其值也不会变化,因为引用地址没变化。

总结:

1. 值传递 所传递的是原值的拷贝,即使拷贝在传递后发生了变化,原值也不会改变。

2. 引用传递 所传递的是引用对象的地址,所以在传递后对于对象内容的改变并不能使得传递参数发生变化,只有在指向不同对象是才会发生变化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值