[有趣] 关于一条有意思的代码--------String与StringBuffer

各位晚上好,是啊,再过两个小时就是"明天"了

终于有时间来整理一下有趣的东西了,话不多说.

先看代码

String s1 = new String(“abc”);

StringBuffer s2 = new StringBuffer(“abc”);

s2.append(s1);

s1 = s2.toString();

s1 oncat(“abc”)

System.out.println(“s1”)

还是先当做问题来问s1的值为

A.     abcabc

B.      编译错误

C.     abcabcabc

D.     运行错误

 

 

刚刚看到这条代码的时候不假思索脱口而出的选C,

我的理解是

String s1 = “abc”

StringBuffer s2 =”abc”

S2通过append()方法使s1的值添加到s2的后面

S2 = “abcabc”(StringBuffer类型)

S1 = s2(toString方法可以使StringBuffer类型转化为String类型)

Concat()方法将”abc”添加到s1后面

输出s1为”abcabcabc”

 步骤一气呵成.

 所以我错了.

事实证明我的基础还是不够,这条代码的坑在于concat()方法

Concat()作用

String no1 = “前”;

String no2 = “后”;

No1.concat(No2);

将no2连接到no1的后面

但是.

这个方法并不是改变原值,而是创建一个新的值,是需要有人接收的.

意思是说用No1.concat(No2);

no1 no2 还是等于原值

编译上没有报错,运行后没有报错

但使用断点后,发现在变量窗口可以看见这条代码显示为红字说明有问题,但没有影响程序其他语句.

如果这条代码写为s1 = s1concat(“abc”);

那么s1输出就是abcabcabc

这里就是一个concat()方法需要赋值给一个变量.

这样就没有问题了.


感觉这段代码很有意义.可以看出基础.


好了,今晚就这样了.

如有错误请指出,我会修改,并多加学习.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张德仁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值