日期:2011-03-22 16:17:00 来源:本站整理
数组[Java编程]
本文“数组[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
对数组的大大都必要的介绍已在第4章的最后一节举行.通过那边的学习,大家已知道自己该若何定义及初始化一个数组.对象的包容是本章的重点,而数组只是包容对象的一种方法.但由于还有其他大量办法可包容数组,所以是哪些地方使数组显得如此分外呢?
有两方面的问题将数组与其他调集范例区脱离来:效率和范例.关于Java来说,为保存和拜候一系列对象(实际是对象的句柄)数组,最有效的办法莫过于数组.数组实际代表一个简单的线性序列,它使得元素的拜候速度非常快,但我们却要为这种速度付出代价:成立一个数组对象时,它的大小是固定的,并且不可在那个数组对象的“存在时间”内发生改变.可成立特定大小的一个数组,然后假定用光了存储空间,就再成立一个新数组,将全部句柄从旧数组移到新数组.这属于“矢量”(Vector)类的行为,本章稍后还会具体谈论它.但是,由于为这种大小的机动性要付出较大的代价,所以我们认为矢量的效率并没有数组高.
C++的矢量类知道自己包容的是什么范例的对象,但同Java的数组相比,它却有一个明显的缺陷:C++矢量类的operator[]不能举行范围查抄,所以很简单超越边界(但是,它可以查询vector有多大,并且at()办法确切能举行范围查抄).在Java中,无论利用的是数组还是调集,城市举行范围查抄——若超越边界,就会得到一个RuntimeException(运行期违例)错误.正如大家在第9章会学到的那样,这类违例指出的是一个程序员错误,所以不需求在代码中查抄它.在另一方面,由于C++的vector不举行范围查抄,所以拜候速度较快——在Java中,由于对数组和调集都要举行范围查抄,所以对性能有一定的影响.
本章还要学习别的几种常见的调集类:Vector(矢量)、Stack(仓库)以及Hashtable(散列表).这些类都触及对对象的处理——好象它们没有特定的范例.换言之,它们将其当作Object范例处理(Object范例是Java中全部类的“根”类).从某个角度看,这种处理办法是非常公道的:我们仅需构建一个调集,然后任何Java对象都可以进入那个调集(除基本数据范例外——可用Java的基本范例封装类将其作为常数置入调集,大概将其封装到自己的类内,作为可以改变的值利用).这再一次反映了数组优于通例调集:成立一个数组时,可令其包容一种特定的范例.这意味着可举行编译期范例查抄,预防自己设置了错误的范例,大概错误指定了预备提取的范例.当然,在编译期大概运行期,Java会避免我们将不当的消息发给一个对象.所以我们没必要考虑自己的哪类做法越发危险,只要编译器能及时地指出错误,同时在运行期间加快速度,目的也就到达了.此外,用户很少会对一次违例事件感到非常惊奇的.
考虑到履行效率和范例查抄,应尽大概地采取数组.但是,当我们试图办理一个更通例的问题时,数组的范围也大概显得十清楚显.在研究过数组今后,本章剩余的部份将把重点放到Java供应的调集类身上.
以上是“数组[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
- ·上一篇文章:数组和第一类对象
- ·下一篇文章:对象的包涵
- ·中查找“数组”更多相关内容
- ·中查找“数组”更多相关内容
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论