• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

引用传递的内存分析


结果不应该是hello 和jike吗 ?  为什么是两个hello,老师讲解为String类型数据不可变,这个不明白,希望大神能解释一下  

这个是老师的内存分析.我的问题在一下面的含参方法在使用的时候,不就是相当于运行
String temp ="jike";
这一行代码吗 ?   为什么不能改变

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与2

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

使用道具 举报

Strings="ABCabc";System.out.println("s="+s);s="123456";System.out.println("s="+s);打印结果为:s=ABCabcs=123456代码我给你举个例子就是上边的代码,然后我要说的是:

s只是一个引用,它指向了一个具体的对象,当s=“123456”; 这句代码执行过之后,又创建了一个新的对象“123456”, 而引用s重新指向了这个心的对象,原来的对象“ABCabc”还在内存中存在,并没有改变。
093003bbkfh90i0hdl451b.jpg
有木有比你的例子要简单理解呢。。。

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!