30+的人学Java,数组是啥玩意?

来源:互联网 发布:tensorflow车道线识别 编辑:程序博客网 时间:2024/05/17 23:20

30+的人学Java,数组是啥玩意?

数组

数组是我学习Java的基本程序设计结构中的最后一部份,了解完后,就要进入对象和类的世界中了。

让我们看看数组是什么?数组是一种数据结构,用来存储同一类型值的集合,要切记,是同一类型值的集合,也就是说如果我声明的是整型,那这个数组全部都是整型的。举例为证:

int[] a;//声明了整型数组a;

int[] a = new int[100];//创建了一个可以存储100个整数的数组,并将值赋予a

一旦创建了数组,就可以给数组元素赋值,比如,我们使用一个循环进行赋值:

int[] a = new int[100];

for (int i = 0; i<100; i++)

a(i) = i ;

还有一条:一旦创建了数组,就不能改变它的大小,但是可以改变其中的元素。


30+的人学Java,数组是啥玩意?

for each循环

1、for each循环:

Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素,而不必为指定下标值而分心,这种增强的for循环语句格式为:

for (variable : collection) statement

定义一个变量用于集合中的每一个元素,并执行相应的语句,collection表示一个数组,比如下面这段代码:

for (int element : a)

System.out.println(element);

这段代码的意思是:打印数组a的每一个元素,一个元素打印一行。

如果需要处理一个集合中的所有元素,for each循环是一个不错的选择。

2、数组的初始化以及匿名数组:

创建数组对象并同时赋予初始值的一种简化书写方式,请看例子:

int[] smallPrimes = {2,3,5,7,11,13};

请注意哦,这里不用调用new来创建。甚至还可以初始化一个匿名的数组:

new int[] {2.3,5,7,11,13};

这种表示方法将创建一个数组,并利用括号中的值进行初始化,它的大小就是初始值的个数,使用这种语法形式可以在不创建新变量的情况下重新初始化一个数组。

3、数组拷贝:

在Java中,允许将一个数组变量拷贝给另一个数组变量,这个时候,两个数组将引用同一个数组:

int [] luckyNumbers = smallPrimes;

luckyNumbers[5] = 12;

如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:

int[] = copiedLuckyNumbers = Arrays.copyOf(luckyNumbers,luckyNumbers.length);

如果数组元素是数值型,那么多余的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false,相反,如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

4、命令行参数:

前面已经看到多个使用Java数组的示例,每一个Java应用程序都有一个带String arg[]参数的main方法,这个参数表明main方法将接收一个字符串数组,也就是命令行参数。

5、数组排序:

要想对数值类型数组进行排序,可以使用Arrays类中的sort方法:

int [] a = new int[10000];

...

Arrays sort(a)

这个方法使用了优化的快速排序算法,对于大多数数据集合来说都是效率比较高的,它还提供了几个便用很便捷的方法。

6、多维数组:

多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式。

在Java中,声明一个二维数组相当简单,例如:

double[] [] balances;

与一维数组一样,在调用new对多维数组进行初始化之前不能使用它。

7、不规则数组:

到目前为止,我们看到的数组与其它程序语言中的数组没有多大区别,但实际在一些细微的地方还是存在一些差异,而这正是Java的优势所在,它实际上没有多维数组,只有一维数组,多维数组被解释为“数组的数组”。

例如:在前面的例子中,balances数组实际上是一个包含10个元素的数组,而每个元素又是一个由6个浮点数组成的数组。由于可以单独的存放数组的某一行,所以可以让两行交换。

double[] temp = balances[i];

balances[i] = balances [i + 1];

balances[i + 1] = temp;

这样可以构造一个“不规则”数组,即数组的每一行有不同的长度。


至此,Java语言的基本程序结构到此为止,前面没有看到的,大家可以关注我的头条号查看历史文章,后面将进入对象和类的世界,一起加油吧。
0 0