日期:2014-05-20  浏览次数:20687 次

基础题求解
如果定义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
所以来和大家讨论一下。

------解决方案--------------------
C可以的,整数可以同String相加,这时先对整数调用Integer.toString()将其转换成String,再相加。

所以s+=3相当于s=s+3,执行完毕s的值为 "example3 "。
------解决方案--------------------
b的话是B int i = s.length();返回的是int型的值
C的话:这里的 "+ "号如果是字符的话就直接在后面添加,是数字的话就是相加;
既然你知道E的答案的话应该和B一样的,这里的s= s + "abcd ";相当于s+=..
------解决方案--------------------
D不行的,String对象不能用下标访问,用charAt(int index)
------解决方案--------------------
> > 是数字移位符,s不是数字,所以不能进行这样的操作,A不对

length()是String类的方法,它返回此字符串的长度,所以B对

s+=3;即s=s+3; + 是java里面唯一的可以重载的运算符,它将非字符串值(在这里是3)转换为字符串,如果本身是字符串就不用转换了,然后把它们连接起来.所以C对

s是String对象它不是字符数组,要引用S的第三个元素,应该用charAt(int index)方法,所以d不对,

同样+当然可以把本来就是字符串的两个字符串连接起来,后一个将连接到前一个字符串后面.E对
------解决方案--------------------
该说的楼上的都说了,顺便来JF