一个简单的问题!

吴红军 2007-09-21 06:39:40
String s="Hello";
s =s+" World";
请问s所指向的那个对象是否改变?
s指向的是哪一个对象了?
...全文
163 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
kekeemx 2007-10-04
  • 打赏
  • 举报
回复
指向的对象变了.
楼上那几位已经说的很清楚了.
nedvedWB 2007-10-04
  • 打赏
  • 举报
回复
顶~
ITshu 2007-10-04
  • 打赏
  • 举报
回复
ding
elukuangben 2007-10-01
  • 打赏
  • 举报
回复
完了,对不齐,汗,应该画个图的,呵呵
elukuangben 2007-10-01
  • 打赏
  • 举报
回复
对于String s="Hello";
是这样的先在堆中分配存储空间来存储字符串"helllo",把它的地址值赋值给String对象的一个引用
(堆) (栈)
地址
¦h ¦----- > ¦s ¦
¦e ¦ ¦ ¦
¦l ¦
¦l ¦
¦o ¦
当s=s+"World";就会新开辟一个堆空间,并把这个新的地址赋给s,图示如下:
(堆) (栈)
地址
¦h ¦---X-- > ¦s ¦ <----- ¦h ¦
¦e ¦ ¦ ¦ ¦e ¦
¦l ¦ ¦l ¦
¦l ¦ ¦l ¦
¦o ¦ ¦o ¦
¦w ¦
¦o ¦
¦r ¦
¦d ¦
上面的很乱,看这个,:)
elukuangben 2007-10-01
  • 打赏
  • 举报
回复
对于String s="Hello";
是这样的先在堆中分配存储空间来存储字符串"helllo",把它的地址值赋值给String对象的一个引用
(堆) (栈)
地址
|h|----->|s|
|e| | |
|l|
|l|
|o|
当s=s+"World";就会新开辟一个堆空间,并把这个新的地址赋给s,图示如下:
(堆) (栈)
地址
|h|---X-->|s|<-----|h|
|e| | | | | |e|
|l| |l|
|l| |l|
|o| |o|
|w|
|o|
|r|
|d|
king3320x 2007-09-23
  • 打赏
  • 举报
回复
s =s+" World";
就是从右边向左边来执行
给s从新赋值
冰思雨 2007-09-21
  • 打赏
  • 举报
回复
up
楼上说的完全正确。
GxTryer 2007-09-21
  • 打赏
  • 举报
回复
String 是final的.所以
s=s+"World";
这句执行后s不是指向"Hello",也不是“World”
它指向“Hello World”这个地址。这个地址是新。
实际上String 的+运算有个字符串的复制过程。
那么上面的理解就是创建了新的空间,然后吧“Hello”和“ World”分别复制过来。
这就是不要用+运算做大量String拼接的原因。
capturesource 2007-09-21
  • 打赏
  • 举报
回复
肯定边了啊!!

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧