值传递(值拷贝)与地址值传递(引用传递)的区别

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5oyW5o6Y5py66L2sSkFWQeW8gOWPkQ==,size_20,color_FFFFFF,t_70,g_se,x_16

 1.基本数据类型定义的本质:先变量初始化,然后在栈内存中开辟空间去存放赋给变量的值

int n1=10;

int n2=n1;

n2=80;

输出结果:n1=10

n2=80

分析:将值80赋给n2并不会影响n1的初始化值

结论:基本数据类型赋值存储在栈内存中,其之间的赋值是值传递(值拷贝)

2.引用数据类型(数组)定义的本质:先定义一个数组,然后在JVM栈内存中分配一个地址值,再在堆内存中根据所定义的数组长度开辟相应的空间,地址值直接指向堆内存中所开辟的空间,每次值的改变都是通过调用地址值去改变所开辟的对应堆内存空间中存储的元素的值。

int arr1[ ]={1,2,3};

//两个数组共用一个地址值,改变其中任何一个数组中的元素的值,另一个数组中的对应的元素值也会发生改变 

int arr2[ ]=arr1; 

arr2[0]=10; 

输出结果:arr1[ ]={10,2,3}

分析:将值10赋给arr2就相当于直接赋给arr1的第一个元素,也就是改变元素arr1[0]的值为10

结论:引用数据类型(数组)赋值存储在堆内存中,其之间的赋值是地址值传递(引用传递)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZH_1913

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值