各位晚上好,是啊,再过两个小时就是"明天"了
终于有时间来整理一下有趣的东西了,话不多说.
先看代码
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()方法需要赋值给一个变量.
这样就没有问题了.
感觉这段代码很有意义.可以看出基础.
好了,今晚就这样了.
如有错误请指出,我会修改,并多加学习.