求java高手。。string a=b到底是将b的值给a还是将地址给a?

 我来答
vvind2008
2014-09-09 · TA获得超过321个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:155万
展开全部
本质上string 是引用类型的。
string a="xxx";
a指向字符串xxx所在的地址。
string b=a;
会把a的地址给b,此时a和b保存相同的地址,所以他们的值是相同的。
a="yyy";
此时并不是把a地址的内容改为yyy,而是重新分配地址保存字符串"yyy".修改a的地址为指向yyy.
于是,a有个新地址指向yyy,b仍是老地址指向xxx.
b="zzz";
此时并不是把b地址的内容改为zzz,而是重新分配地址保存字符串"zzz".修改b的地址为指向zzz.
于是,不再有变量指向xxx,xxx内存会被回收。
追问
为什么string是引用类型?int呢
追答
int是基本类型,值类型。意味着每个变量分配一片内存,保存值。修改时,修改内存内容。
说string 是引用,是站在string 变量保存的是地址基础上理解的。但是java已经没有指针了。这都是套用c来理解的。
实际上string 是一个很特殊的类型。
year洗洗睡
2014-09-09 · TA获得超过357个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:208万
展开全部
String a=b是重新定义一个a,并把b的值给了a,
String a="a";
String b="a";
这样的他们的地址才是相同的
更多追问追答
追问
你写的这个分明a和b只有值相同啊
追答
是值相同,但是"a"指向的是同一个地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宇智波o卡
2014-09-09
知道答主
回答量:1
采纳率:0%
帮助的人:2.2万
展开全部
很多人这个地方都搞不明白,java里面对象间是没有值传递的,全部都是地址传递。
更多追问追答
追问

怎么回事
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
印芮澜rN
2014-09-09 · TA获得超过5162个赞
知道大有可为答主
回答量:7445
采纳率:0%
帮助的人:2671万
展开全部
更多追问追答
追问

这怎么回事
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式