首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >charAt法,试题Q

charAt法,试题Q
EN

Stack Overflow用户
提问于 2014-03-22 11:35:15
回答 3查看 878关注 0票数 2

这些关于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

本文的原因如下:ArrayIndexOutOfBoundsExceptionStringIndexOutOfBoundsException,扩展IndexOutOfBoundsException,尽管在实践中,charAt方法抛出StringIndexOutOfBoundsException,但它不是一个有效的选项,因为只要它是IndexOutOfBoundsException,实现就可以抛出其他异常。

但这并没有什么意义,我很确定charAt()会抛出一个StringIndexOutOfBoundsException。论文的答案不正确吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-03-22 11:41:38

第二个答案是不正确的:charAt抛出IndexOutOfBoundsException

选择'A‘也是正确的,因为Java编译器将为您隐式地将char转换为int (尽管使用char作为索引的情况看起来是人为的)。

关于“E”的选择是正确的,你是对的。

票数 3
EN

Stack Overflow用户

发布于 2014-03-22 11:39:39

我想:是的,是的

A-真,因为每个字符也是隐式的int,也就是说,您可以执行int x = 'a'

电子-显然是真的,这是一个基本的真实陈述;

B-假,因为它返回字符,而不是字符;

C-假,因为索引是基于0的;

D-假的,因为它会抛出异常;

F,G-只要检查JavaDoc或尝试一个例子,这些都是微不足道的。

票数 0
EN

Stack Overflow用户

发布于 2014-03-22 18:02:46

感谢大家的投入,非常感谢

我认为最好的答案是:

即使它确实抛出了一个StringIndexOutOfBoundsException,您也不应该依赖它,因为该方法的文档契约是抛出一个IndexOutOfBoundsException。在Java9中,甲骨文可以决定抛出一个扩展了BrandNewException的IndexOutOfBoundsException,而不会违反文档中的约定。如果您依赖于抛出StringIndexOutOfBoundsException,则依赖于将来可能发生更改的实现细节。

Java SE7考试!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22577071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档