这些关于String类的charAt()方法的语句中有哪些是真的? 选择2个选项 A. charAt( )方法可以将char值作为参数。 B. charAt( )方法返回一个字符对象。 表达式char = "12345".charAt(3)将指定3给ch。 表达式char = str.charAt(str.length()),其中str为"12345",将3赋值给ch。 第一个字符的索引是0。 如果传递的值大于或等于字符串的长度(或小于0),则抛出StringIndexOutOfBoundsException。 如果传递的值大于或等于字符串的长度(或小于0),则抛出ArrayIndexOutOfBoundsException。
问题的答案是A,E。我的答案是E,F
本文的原因如下:ArrayIndexOutOfBoundsException和StringIndexOutOfBoundsException,扩展IndexOutOfBoundsException,尽管在实践中,charAt方法抛出StringIndexOutOfBoundsException,但它不是一个有效的选项,因为只要它是IndexOutOfBoundsException,实现就可以抛出其他异常。
但这并没有什么意义,我很确定charAt()会抛出一个StringIndexOutOfBoundsException。论文的答案不正确吗?
发布于 2014-03-22 11:41:38
第二个答案是不正确的:charAt抛出IndexOutOfBoundsException。
选择'A‘也是正确的,因为Java编译器将为您隐式地将char转换为int (尽管使用char作为索引的情况看起来是人为的)。
关于“E”的选择是正确的,你是对的。
发布于 2014-03-22 11:39:39
我想:是的,是的
A-真,因为每个字符也是隐式的int,也就是说,您可以执行int x = 'a';
电子-显然是真的,这是一个基本的真实陈述;
B-假,因为它返回字符,而不是字符;
C-假,因为索引是基于0的;
D-假的,因为它会抛出异常;
F,G-只要检查JavaDoc或尝试一个例子,这些都是微不足道的。
发布于 2014-03-22 18:02:46
感谢大家的投入,非常感谢
我认为最好的答案是:
即使它确实抛出了一个StringIndexOutOfBoundsException,您也不应该依赖它,因为该方法的文档契约是抛出一个IndexOutOfBoundsException。在Java9中,甲骨文可以决定抛出一个扩展了BrandNewException的IndexOutOfBoundsException,而不会违反文档中的约定。如果您依赖于抛出StringIndexOutOfBoundsException,则依赖于将来可能发生更改的实现细节。
Java SE7考试!
https://stackoverflow.com/questions/22577071
复制相似问题