如果定义String s=”example”,下面语句哪些会编译?(多选)
A   s>>=2;
B   int i = s.length();
C   s+=3;
D   char c= s[3]; 
E   s= s +"abcd";
我觉得答案是b,d,可是标准答案是b,c,e
所以来和大家讨论一下。

解决方案 »

  1.   

    C可以的,整数可以同String相加,这时先对整数调用Integer.toString()将其转换成String,再相加。所以s+=3相当于s=s+3,执行完毕s的值为"example3"。
      

  2.   

    b的话是B   int i = s.length();返回的是int型的值
    C的话:这里的"+"号如果是字符的话就直接在后面添加,是数字的话就是相加;
    既然你知道E的答案的话应该和B一样的,这里的s= s +"abcd";相当于s+=..
      

  3.   

    D不行的,String对象不能用下标访问,用charAt(int index)
      

  4.   

    >>是数字移位符,s不是数字,所以不能进行这样的操作,A不对length()是String类的方法,它返回此字符串的长度,所以B对s+=3;即s=s+3; + 是java里面唯一的可以重载的运算符,它将非字符串值(在这里是3)转换为字符串,如果本身是字符串就不用转换了,然后把它们连接起来.所以C对s是String对象它不是字符数组,要引用S的第三个元素,应该用charAt(int index)方法,所以d不对,同样+当然可以把本来就是字符串的两个字符串连接起来,后一个将连接到前一个字符串后面.E对