ITPub博客

首页 > 应用开发 > Java > Java怎样定义一个数组

Java怎样定义一个数组

原创 Java 作者:zoukuaidian 时间:2020-11-16 09:14:35 0 删除 编辑

在 Java 泛型出现之前,只有数组可以用来存储指定类型的对象;在自动装箱机制出现之前,只有数组可以用来存储基本数据类型;也就是说,在泛型和自动装箱机制出现之前,数组在 Java 当中的分量举足轻重。

况且数组还是一种效率最高的存储和随机访问对象序列的方式,但遗憾的是,数组的长度是固定的——举个例子,创建它的时候指定长度是 6,就只能存储 6 个元素,当你想放第 7 个元素时,是无法做到的。

随着计算机硬件能力的提升,开发人员在存储一组数据的时候更愿意使用 ArrayList 而不是数组。尽管 ArrayList 内部是通过数组实现的,但与数组相比,它的容量能够自动增长,还有很多数组没有的特性。能不使用数组就别使用数组,除非要用数组来改善性能问题。

01、创建数组

让我们来给Java数组下一个明确的定义——数组用来存储 固定长度同类型元素。

示例如下:

int[] ints相较于 int ints1[]是优选的声明方式,  int ints1[]风格来自于 C/C++ 语言 ,便于 C/C++ 程序员能够快速地理解Java语言。

数组的创建方式有两种,一种是通过 new关键字,同时指定长度,然后通过 array[index] = value的方式赋值;另外一种方式是通过 {value1, value2, ...}的方式直接创建并同时赋值。

最常见的应用如下(日期的占位符字符串):

private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd",

"yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM" };

02、小心length

在使用List和Map的时候,可以直接通过 size()方法获取容器的实际大小(长度)。数组也有一个关键字 length来获取大小(长度),但意思大不相同。 length只表示数组所能够容纳元素的大小,而并非数组的实际大小。

举例如下:

03、Arrays工具类

Java的设计者可谓良苦用心,特意为数组设计了一个专属工具类—— java.util.Arrays,里面有几个常用的方法我们来介绍一下。

1)sort()

sort()方法用来对数组进行排序,该方法要求数组的元素要实现Comparable接口。如果排序的元素不是String或者基本数据类型,就需要主动实现Comparable接口(基本数据类型和String本身已经实现了Comparable接口)。

示例如下:

sort()方法排序后的结果就是[二, 沉, 王, 默]。

2)binarySearch()

binarySearch()方法用来对数组进行二分查找(返回值所在的下标,未找到的话返回-1),调用该方法之前必须要先排序。

示例如下:

由于 sort()方法排序后的结果为[二, 沉, 王, 默],所以 Arrays.binarySearch(strs, "二")返回下标值0。

3)asList()

asList()方法用来将数组转化成List(ArrayList),源码如下:

那如何将List转化成数组呢?通过List的 toArray()方法。可参照下例体验由数组定义方式不同带来的细微差别。

当声明的数组大小超出List的大小后, toArray()方法会对转换后的数组进行补位( null)。

4)toString()

toString()方法用来将数组进行字符串格式的输出( [value1, value2, value3, ...]的格式),源码如下:

PS:如果你在学习过程中遇到什么问题,或者缺乏相关的学习资料,可加入我的Java学习交流Q群:927296445,随问随答,群里面还有我这段时间整理的一些Java学习手册,面试题,开发工具,PDF文档书籍教程,需要的话都可以进来自行下载。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69985675/viewspace-2734319/,如需转载,请注明出处,否则将追究法律责任。

下一篇: Java集合类小结
请登录后发表评论 登录
全部评论

注册时间:2020-10-19

  • 博文量
    53
  • 访问量
    21146