A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张淼 中级黑马   /  2012-9-19 23:12  /  2661 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

运行语句:float x[] = new float[10];  则下面哪个选项是不正确的?
A.    x[9] = 0
B.     x[10] = 0.0f
C.    x[9] = 0.0fx.
D.    x.length = 10

这个题的答案是CD,不知是答案不对,还是我理解的不对。

A中 x[9]不是应该为0.0f吗
B中  
x[10] = 0.0f  这个明显是错的吧,数组角标越界了
C中  这个明显是错的
D中 x.length = 10  这个是对的吧
那么答案是不是应该是ABC呢?

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 这道题大家讨论的很激烈呢。。.

查看全部评分

13 个回复

倒序浏览
我也选ABC
回复 使用道具 举报
应该是bc吧  个人见解
回复 使用道具 举报
本帖最后由 夏诗瑶 于 2012-9-20 07:26 编辑

首先.A是对的。这是一个自动类型转换。不管是赋值还是判断,都是对的。
大家可以分别用eclipse输出System.out.println(a[9]=0);System.out.println(a[9]==0)试试看。发现不管是编译还是运行都是可以i的,而且结果为真。

然后.B数组角标越界,应该是报IndexOutOfBoundsException异常
C是明显错误的。
最后,再说D: x.length本身没任何错误,但是它初始化话的时候就固定长度了,相当于一个常量,而常量是不能被赋值的。但如果你认为D是判断长度是否为10,D又是正确的了。



ps:看大家别都在纠结了争论这题。只要知道此题ABCD分别考查什么,不要太在意最后选什么,关键是弄懂考点和原理就行了。

点评

A错。 选项是判断结果,不是需要运行的代码(要运行,语句末要加分号滴)。  发表于 2012-9-20 04:45
C到底是错误的还是对的?  发表于 2012-9-19 23:43

评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1 题目写的运行语句,所以认为A正确.

查看全部评分

回复 使用道具 举报
ABC,你答的对。。   数组默认值 int是0    double是0.0  float是0.0f  boolean是false。  正好笔记上面有
回复 使用道具 举报
本帖最后由 赵家阳 于 2012-9-20 00:06 编辑

数组的角标是从0开始的,所以一个数组中最大的角标是  arr.length-1            
一个数组的长度始终都比他的角标要多1,
这个题中,A肯定没有错,尽管赋值的是整数,实际上已经强制类型转换了,由int类型的转向float类型,因为,float用8个字节表示,int用4个字节表示,java中强制转换时,由小向大转换,所以输出时,就成了0.0;
B,越界,肯定错!
C,不知是故意写的还是不小心写的,不过这样的语句在java中编译无法通过!(报错:Syntax error on token "x", delete this token)
D,正确!


所以我选:AD
回复 使用道具 举报
针对这一题的大致分析:
A.    x[9] = 0             //这句话,是正确的,java中的自动类型提升,楼主可以可以编译试试

B.     x[10] = 0.0f     //正如楼主分析的一样,报错,数组越界异常

C.    x[9] = 0.0fx.     //编译不通过

D.    x.length = 10    //绝对正确,数组的长度

所以这一题的选择应该是:B C

回复 使用道具 举报
错误的是:ABC

不过楼主理解有误哦。A选项错误是因为,x[9]=0.0而非0.0f

代码中float要写成0.0f是要告诉计算机这是浮点数,开辟此浮点数变量存储空间大小会不同,而计算机自己使用时,为0.0,你可以打印看下。

另外,你们别误会,这题目, 选项是判断结果,不是需要运行的代码(要运行,语句末要加分号滴)

点评

龙兄,语句末要加分号,完全是牛角尖~~。 另外,D是错误的,理由如上。  发表于 2012-9-20 07:23
回复 使用道具 举报
目测我没有钻牛角尖哦。。。
回复 使用道具 举报
各位说的都很有道理,学习了。
回复 使用道具 举报
{:soso_e113:}观看一下
回复 使用道具 举报
罗雪梅 发表于 2012-9-20 08:44
观看一下

观看一下就完了?给我指导一下啊。
回复 使用道具 举报
你这技术分长的太快了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马