JAVA中字符串类型String是不允许改变其内容的,那么请问简要谈谈下列语句是如何运行的: 20

JAVA中字符串类型String是不允许改变其内容的,那么请问简要谈谈下列语句是如何运行的:Strings=newString("ABCD");s=s+123+newDa... JAVA中字符串类型String是不允许改变其内容的,那么请问简要谈谈下列语句是如何运行的:String s=new String("ABCD");s=s+123+new Date()

这个应该怎么写啊~
展开
 我来答
精灵只路过
推荐于2017-11-25 · TA获得超过2144个赞
知道小有建树答主
回答量:619
采纳率:100%
帮助的人:659万
展开全部
确实,Java中的String类型确实是不允许改变其内容的,String类型的对象一旦建立,将在堆内存当中占据一个固定的内存空间,String类型的对象无法改变。
但是你在运算的时候又发现,你定义的String类型的s变量又是可以进行连接的,如"abc"+"def"最终得到的s的值是"abcdef",这似乎看着String类型的对象又是可以改变的,这是自相矛盾吗?
其实,String对象不允许改变内容是正确的,但是可以改变定义的String类型的变量指向,你定义的String s其实是一个指向String对象的指针,如果不存在对象就为null。
如果你定义了:
String s="abc";
那么将创建一个内容为"abc"的String对象,并且s指向这个对象。
一旦s=s+123+new Date()这样的操作,那么将创建一个新的String对象来存放新的内容,原先的对象依旧在内存中,但是s不在指向它,那么这个对象就会成为垃圾内存,在某一个特定的时刻有Java虚拟机回收。
如果希望存放的String可以调整大小,而不是创建新的内存来存放新的对象,可以使用StringBuffer这个类来存放。这个内存可以调整大小。而不会抛弃。
oliverpp
2013-04-13 · TA获得超过988个赞
知道小有建树答主
回答量:686
采纳率:0%
帮助的人:650万
展开全部
1.新建对象String,内容为ABCD,开辟一块空间存进去,把内存地址返回给s
2.新建对象String,内容为s的内容加上字符串123的内容加上new Date()转为字符串后的内容,开辟一块空间存进去,把内存地址返回给s
以上内存均指jvm中的内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
会吃草的车
2013-04-13 · 超过20用户采纳过TA的回答
知道答主
回答量:131
采纳率:0%
帮助的人:58.5万
展开全部
拼接字符串啊。123 链接字符串他也会变成字符串的,和new Date()链接起来时获得习题的当前时间。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友12ee0fd
2013-04-13 · TA获得超过4.7万个赞
知道大有可为答主
回答量:1.1万
采纳率:66%
帮助的人:1965万
展开全部
new StringBuilder().append(s).append(123).append(new Date().toString())
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式