为了账号安全,请及时绑定邮箱和手机立即绑定

引用传递的内存分析

引用传递的内存分析

水一方 2016-09-28 08:32:03
结果不应该是hello 和jike吗 ?  为什么是两个hello,老师讲解为String类型数据不可变,这个不明白,希望大神能解释一下  这个是老师的内存分析.我的问题在一下面的含参方法在使用的时候,不就是相当于运行String temp ="jike";这一行代码吗 ?   为什么不能改变  
查看完整描述

2 回答

已采纳
?
Caballarii

TA贡献1123条经验 获得超629个赞

tell(str1)运行的时候,是把str1的地址作为参数传进去的,也就是"hello"的地址,这个地址在tell方法运行的时候是不会改变str1的地址的,如果是一般对象,是可以修改地址里的内容的,但是对于String对象来说,不可以修改地址内的内容,只能把地址重新指向新的字符串,所以在str1上不会起变化

查看完整回答
反对 回复 2016-09-28
?
大咪

TA贡献785条经验 获得超332个赞

String s = "ABCabc";
System.out.println("s = " + s);
s = "123456";
System.out.println("s = " + s);
打印结果为:
s = ABCabc
s = 123456

代码我给你举个例子就是上边的代码,然后我要说的是:

s只是一个引用,它指向了一个具体的对象,当s=“123456”; 这句代码执行过之后,又创建了一个新的对象“123456”, 而引用s重新指向了这个心的对象,原来的对象“ABCabc”还在内存中存在,并没有改变。

//img1.sycdn.imooc.com//57eb3fc60001ab9b06350505.jpg

有木有比你的例子要简单理解呢。。。

查看完整回答
反对 回复 2016-09-28
  • 水一方
    水一方
    我看过这个博客,那么str1为什么不可以是一个引用 ?
  • 大咪
    大咪
    str1就是一个引用变量呀
  • 2 回答
  • 1 关注
  • 1280 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信