java String一旦声明字符串就不能改变

Stringsb="bbbwlirbbb";sb.replaceAll(“wlirbbb”,”hhtccc”);这样的替换是修改sb对象的类容呢,还是在一块新的内存里面写... String sb= "bbbwlirbbb";

sb.replaceAll(“wlirbbb”,”hhtccc”);这样的替换是修改sb对象的类容呢,还是在一块新的内存里面写入bbbhhtccc。
输出结果:bbbhhtccc

下面是replace:

String s="hello";
System.out.println(s.replace("h","H"));
System.out.println(s);
输出结果:
Hello
hello
为什么两则有区别呢?
展开
 我来答
以水丹75
2013-08-27 · TA获得超过575个赞
知道小有建树答主
回答量:567
采纳率:100%
帮助的人:421万
展开全部
你上边sb.replaceAll(“wlirbbb”,”hhtccc”);没有赋值给sb这个变量,所以你输出sb还是不变的,replace后会创建个新的字符串,不会改变原字符串的,这就是字符串一旦声明就不能改变的意思

下边的你其实也是这样没改变s的,只不过你把替换后的字符串直接输出了
yugi111
2013-08-27 · TA获得超过8.1万个赞
知道大有可为答主
回答量:5.1万
采纳率:70%
帮助的人:1.3亿
展开全部
这个是自然的啦,


第一个的啦:当然不是新的内存写入的啦,你的sb已经初始化了呀

第二个的啦:你的s当然不会变的啦,因为你没有这样的啦:s=s.replace("h","H")
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzhangxiaoyun
推荐于2017-11-26
知道答主
回答量:12
采纳率:0%
帮助的人:4.1万
展开全部
都是在一块儿新的内存里生成一个新的字符串,原String 字符串所申请的内存中数据无变化。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吕先生爱叨叨
2013-08-27 · TA获得超过398个赞
知道小有建树答主
回答量:874
采纳率:0%
帮助的人:322万
展开全部
第一个:是在新的内存块写入
第二个:区别在于,第一个调用的s的内存块中的值,第二个调用的是新内存块中的值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
赢了不笑31
2018-04-16
知道答主
回答量:3
采纳率:0%
帮助的人:1.9万
引用赢了不笑31的回答:
String a = "abc";和String a = new String("abc"); 是不能等价的。在创建的过程中,生成的对象数量不同。
展开全部
String a = "abc";和String a = new String("abc"); 是不能等价的。在创建的过程中,生成的对象数量不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式