您的位置:首页 > Web前端

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

2018-03-24 22:04 169 查看
各位晚上好,是啊,再过两个小时就是"明天"了
终于有时间来整理一下有趣的东西了,话不多说.
先看代码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()方法需要赋值给一个变量.
这样就没有问题了.

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

好了,今晚就这样了.
如有错误请指出,我会修改,并多加学习.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: