值传递与引用传递

值传递和引用传递

值传递是:

基本类型的数据的传递.
因为基本数据类型在栈中存储,不同的方法栈区不同,基本数据类型的数据作为方法的参数进行传递,那么方法中会另外开辟一个新的内存空间。跟原来的内存空间不是一个内存空间,如果在方法中对参数值进行更改,不会影响原来内存空间的值.如果非要获取方法中修改后的值,则需要把修改后的值返回回来(也就是return)。

引用传递:

传递的是数组,对象,以及堆中的数据的传递.
如果传递的是对象或者数组,这些都是存放在堆空间中的,都是同一份内存空间,如果在方法中引用的对象或者数组做任何的修改都会影响原来内存空间的值,即修改了原来内存空间,其实操作的是同一份内存空间.

所以值传递和引用传递的本质不同:

是一份内存空间还是二份内存空间的问题.

    public class Demo1 {
    	/**
    	 * 此方法演示值传递,但是注意没有返回值
    	 * @param a
    	 */
    	public  void valueTransfer(int a){
    		a=100;
    		System.out.println(a);
    	}
    	/**
    	 * 此方法演示值传递,但是有返回值
    	 * @param a
    	 */
    	public  int  valueTransfer1(int a){
    		a=100;
    		return a;
    	}
    	/**
    	 * 引用传递
    	 * @param args
    	 */
    	public void referenceTransfer(Student stu){
    		stu.setAge(stu.getAge()+1);
    		stu.setName("ee");
    		stu.setStuNo("s003");
    	}
    public static void main(String[] args) {
    	Demo1 d1=new Demo1();
    	int a=10;
    	d1.valueTransfer(a);
    	System.out.println("a="+a);
    	a=d1.valueTransfer1(a);
    	System.out.println("a="+a);
    	
    	Student stu=new Student();
    	d1.referenceTransfer(stu);
    	System.out.println("age="+stu.getAge());
    	System.out.println("name="+stu.getName());
    	System.out.println("stuNo="+stu.getStuNo());
    	
    }
    }


结果:
100
a=10
a=100
有参数构造
无参数构造
age=19
name=ee
stuNo=s003
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值