基础题求解
如果定义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