引用传递

关于引用传递和数据存储的分析

  1. 第一种情况 int 类型数据
    这里写图片描述

    其运行结果是 20 30
    这里写图片描述
    上面是数据内存分析

首先类中出现了属性值 10,储存在堆内存中,new新对象则栈内存新对象r1指向堆内存10;然后通过对象.属性 对属性赋新的数值20.则堆内存数据更改为20;然后是tell() 含参的方法tell出现一个新的对象r2,则此时r1/ r2指向20;然后通过r2对象对堆内存属性 temp数据进行更改,则此时r1 r2指向temp为30 回到主方法,程序运行到tell方法,此时r1指向30;所以结果为20 30

  1. 第二种类型 String数据
    这里写图片描述
    运行结果是 hello hello 而不是 hello jike

    这里写图片描述
    以上是数据储存分析
    首先是栈内存str1 指向 堆内存 hello ,然后tell方法出现了 str2 此时二者同时指向hello,然后通过tell方法本来是应该将jike赋值给str1的,但是因为String类型数据不可改变的性质,使得

http://blog.csdn.net/zhangjg_blog/article/details/18319521 这个大神的博客解释了为什么String 类型数据是不可变的,解释了小白的问题

  1. 第三种类型String

这里写图片描述

这里写图片描述

又可以改变了 ,这不科学啊! 还是不懂啊!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值