java中的String对象现在是可以改变的了吗?
以前学习java的时候一直在讲Stringisimmutable,如果要可改变的字符串需要使用StringBuffer或者StringBuilder。但今天无意发现Str...
以前学习java的时候一直在讲String is immutable,如果要可改变的字符串需要使用 StringBuffer 或者 StringBuilder。但今天无意发现String对象的内容是可以改变的,请问这是什么原因?还是java8的新特性吗?
展开
2个回答
2015-10-02
展开全部
java.lang.String是不可变的,在你的例子中想一想s = "HTML";这一句在做什么。是生成一个"HTML"的对象再让s指向这个对象。而原来的String对象"Java"并没有改变。只是s没有指向他了,但是他还是在常量池中,直到被回收。
2015-10-02
展开全部
你这么做是直接把"Java"和"HTML"的地址引用赋值给了字符串变量s
补充:StringBuilder(字符串构造器)和StringBuffer(字符缓冲区)是用于字符串在不断地添加/修改,效率要高于String(如果使用String,当它的值改变时,要重新为它的变量分配内存,效率低于StringBuilder(字符串构造器)和StringBuffer(字符缓冲区))
>>字符串在不断地添加/修改:StringBuilder(效率最高/不安全)>StringBuffer(效率略低/安全)
补充:StringBuilder(字符串构造器)和StringBuffer(字符缓冲区)是用于字符串在不断地添加/修改,效率要高于String(如果使用String,当它的值改变时,要重新为它的变量分配内存,效率低于StringBuilder(字符串构造器)和StringBuffer(字符缓冲区))
>>字符串在不断地添加/修改:StringBuilder(效率最高/不安全)>StringBuffer(效率略低/安全)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询