值传递和引用传递

对于这两个的概念一直模模糊糊的,面试也经常被问到,写下这篇博客就是加深记忆也方便以后查看

首先先说之前我理解的值传递和引用传递,值传递就是基本数据类型,存在栈中。引用传递就是引用数据类型,存在堆中。

其实基本数据类型在程序中也分成员变量和局部变量,在引用传递中也包含String,而且面试题也总是不放过String。

首先确认一点:引用传递的本质就是传值,只是传递的是地址值

1.在基本数据类型中,成员变量是放在堆中,局部变量放在栈中。

2.在String中,其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份,因为String值在创建后就不可更改,所以每次的修改都是在创建新的String



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值