JAVA-对于局部变量与实例变量的区别

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkBaSEFPYmlnc21hcnQ,size_20,color_FFFFFF,t_70,g_se,x_16 

 对于此题的内存解析:

Test test = new Test();

创建的test里面存的是一个地址值,它本身是在栈内创建的。

int n = 8因为是局部变量所以也是在栈内,通过test.calc1方法进入栈内调用了将n的值赋给了num,所以此时的计算都是在栈内,num = num+1。  

Student stu = new Student();

下面是创建了一个stu,里面存的也是地址值,但是因为stu.age的调用,此时堆空间里面存入了age = 18,通过test.calc2的方法,将age =  18当参数传递到栈内进行计算,计算结果传回到堆内。因为形参的数据类型是类,所以将stu的地址值赋值给了形参student,所以此时一同指向的是堆内存的新的结果值19。

题外:栈内是存局部变量,进行加减乘除等一些列运算,堆内存的是创建的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值