严格来说,数组是一种数据结构。但是由于它几乎在任何语言中都存在,而且在大量场合中刷存在感,出现得过于普遍,过于频繁,所以我宁可认为它其实是一种伪装成数据结构的基础数据类型。
Java对于数组的声明也很简单,这几种方式都是合法的:
int[]a1= {1,2,3};int[]a2=new int[] {1,2,3};int[]a3=new int[3];int[]a4= {newInteger(1),newInteger(2),3};int[]a5=new int[] {newInteger(1),newInteger(2),3};
Integer[]a6= {1,2,3};
把上面的基本类型int和包装类型Integer换成其他的基本类型和包装类型也都是合法的(Void类型除外)。
Java数据有如下的几个特点:
数组一旦被创建,它的大小就是不可以改变的,长度是确定的
其元素必须是相同类型,不允许出现混合类型
数组中的元素可以是任何数据类型,包括基本类型和包装类型
数组本身就是对象
Java数组的下标(也就是起始序号),默认是从0开始的,所以数组最后一个元素的下标 = 数组长度 – 1
读取数组元素是通过下标完成的,比如array[0]、array[10],如果读取数组中不存在元素,比如array[11],Java就会抛异常:ArraylndexOutOfBoundsException
多维数组与一维数组性质一样
关于数组,有一个并不明显的事实是:并行数组并不比普通数组快,不仅执行效率相差无几,而且并行数组还容易引发内存泄漏。例如:
当不断调大数组元素数量时,并行数组运算很快崩溃:
当然,有些同学的机器配置很好,怎么弄都没事,那只能说性能杠杠滴!这个bug之前在Java8中容易出现,貌似高版本的JDK已经修复了。
由于数组和Java中的泛型(这个后面会讲)并不能很好地协同工作,所以在开发中,使用集合的频率还是更高一些。
最后来啰嗦一个比较好玩的东西:枚举enum。
枚举也是Java中一种较为特殊的类型,自JDK1.5引入,它除了不能继承之外,就是一个普通的类。
可以使用接口来组织枚举:
枚举也可以嵌套:
有一种枚举叫常量特定方法,它在运行时方法会出现多态的行为:
Java中还有一些比较稀奇古怪的语法特性,但这并不妨碍80/20原则:只需要掌握20%的知识,就能解决80%的问题。尽管Java即使没有枚举也能很好地运行,但多了解一些它们特性,一方面可以更优雅地开发。另一方面,在求职面试、技术分享、经验交流时,也能够拿得出更多的干货。
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
丞旭猿论坛
暂无评论内容