结果不应该是hello 和jike吗 ? 为什么是两个hello,老师讲解为String类型数据不可变,这个不明白,希望大神能解释一下 这个是老师的内存分析.我的问题在一下面的含参方法在使用的时候,不就是相当于运行String temp ="jike";这一行代码吗 ? 为什么不能改变
2 回答
已采纳
Caballarii
TA贡献1123条经验 获得超629个赞
tell(str1)运行的时候,是把str1的地址作为参数传进去的,也就是"hello"的地址,这个地址在tell方法运行的时候是不会改变str1的地址的,如果是一般对象,是可以修改地址里的内容的,但是对于String对象来说,不可以修改地址内的内容,只能把地址重新指向新的字符串,所以在str1上不会起变化
大咪
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”还在内存中存在,并没有改变。
有木有比你的例子要简单理解呢。。。
添加回答
举报
0/150
提交
取消