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