Java的字符串问题 5

Strings="xyz";会在编译时创建一个"xyz"字符串,但是没有new关键字。那么运行时会为s创建一个String类型的对象实例吗?这个对象有自己的内存空间吗?执... String s="xyz";
会在编译时创建一个"xyz"字符串,但是没有new 关键字。那么运行时会为s创建一个String类型的对象实例吗?
这个对象有自己的内存空间吗?
执行system.out.println(s=="xyz");返回结果是true,就说明s指向的是"xyz"所在的空间,这不表明JVM并没有为s分配新的内存空间吗?

再有,编译s+="1";时会创建一个"xyz1"的字符串吗?
我说的是在编译时
展开
 我来答
xx758464470
2014-01-22 · 超过16用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:40.9万
展开全部
String 对象在java里实际是存在于常量池,如果每次使用常量式的赋值就会重新在常量池中产生一个然后将引用赋予变量,如果常量池已有该指则直接将该引用赋予变量。
没有new关键字,则要看常量池有没有“xyz”的值,如果有则不创建只拿引用,如果没有创建后拿引用。
这个对象的内存空间是的确存在的。
s==“xyz”比较的是地址,即引用,我们上面不管哪种情况均已将引用给了s,故比较结果为true。
s+=“1”会还是判断常量池中有没有“xyz1”这个值,其他都一样。
yingbenyang
2014-01-22 · TA获得超过129个赞
知道小有建树答主
回答量:190
采纳率:33%
帮助的人:73.1万
展开全部
String s="xyz";会在编译时创建一个"xyz"字符串,但是没有new 关键字。那么运行时不会为s创建一个String类型的对象实例
再有,编译s+="1";时会创建一个"xyz1"的字符串
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7f89205c3
2014-01-22 · 超过23用户采纳过TA的回答
知道答主
回答量:101
采纳率:0%
帮助的人:71万
展开全部
具体的就是说,如果不使用new关键字的话,在创建的时候会去常量池查找是否有这个值,如果有的话,直接引用,如果没有的话,就new一个出来。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuanweiqian
2014-01-22 · 超过13用户采纳过TA的回答
知道答主
回答量:154
采纳率:0%
帮助的人:38.9万
展开全部
会,每个string会自动的给分配空间,String a=“1”和a=a+"2"是指向两个不同的内存地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
muqingren
2014-01-22
知道答主
回答量:21
采纳率:0%
帮助的人:3.7万
展开全部
会的 ...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式