主题:[原创]SCJP考试试题解析八
SCJP考试试题解析八
我的QQ号:2535279
我的QQ群:58591592
www.javaedu.com.cn
public class Certkiller3{
public static void main(String[] args){
//insert code
System.out.println(s);
}
}
Which two code fragments,inserted independently at "//insert code",generate the output 4247?(choose two)
A. String s = "123456789";
s=(s-123).replace(1,3,"24")-"89";
B. StringBuffer s = new StringBuffer("123456789");
s.delete(0,3).replace(1,3,"24").delete(4,6);
C. StringBuffer s = new StringBuffer("123456789");
s.subString(3,6).delete(1,3).inset(1,"24");
D. StringBuilder s = new StringBuilder("123456789");
s.subString(3,6).delete(1,2).insert(1,"24");
E. StringBuilder s = new StringBuilder("123456789");
s.delete(0,3).replace(1,3,"").delete(2,5).insert(1, "24");
下面我们一个一个的来看解析吧:
A.这个选项是不正确的,因为,对于字符串操作根本就不能使用"-"操作符.这个错的有点让人郁闷了.应该是送分的吧.
B.这个是正确的.
s.delete(0,3)删除从下标为0到下标为3(不包括)的字符,返回一个StringBuffer型的对象"456789".对"456789"进行一次replace(1,3,"24")操作,即从第下标为1到下标 为3(不包括)置换成"24",返回一个StringBuffer型的对象"424789",呵呵,离我们的目标"4247"不远了,只要把"89"删掉就行了.用delete(4,6)来删除就可以了.
C.这个是不正确的.
subString()方法的返回值是一个String类型的对象,String类没有提供delete()方法,所以,这个语句是不对的.
D.所犯的错误与C相同
E.是正确的.
delete(0,3)返回一个StringBuilder类型的对象"456789".对"456789",再执行一个replace(1,3,"")操作,就是将下标为0到下标为3的字符串替换成"",返回一个StringBuilder类型的对象"4789".接着,就使用delete(2,5)将最后的"89"删掉.这下返回值就是一个StringBuilder类型的对象"47".我们在中间插入"24"就能得到我们要求的字符串了.所以,这里执行一个insert(1,"24"),从下标为1的位置插入"24".返回值是"4247".
答案为:B,E