Java初学者:数组,声明以及初始化
今天我们说一下java里面的数组,数组在编程语言里的意思,相当于离散数学里面的集合,其意义几乎完全一样,只有一点区别,离散里有无穷集合,比 如,实数集,但是在java里是不存在无穷集合的。在java里,数组就是一些数据的集合。作为我们这些菜鸟,大多数情况下见到的数组,其中的数据都属于 同一类型。少数情况下不属于同一类型,那很有可能发生了多态现象,而且在访问数组元素的方法时,很可能产生了动态绑定,这些我们以后再说。
好了,让我们目前先认为数组里的元素都属于同一类型。那么,怎样声明以及初始化一个数组呢?
声明一个数组有两种常见的形式:
1. 类型名[] 数组名
2.类型名 数组名[]
让我们来举个例子吧,比如我们想声明一个名字为int_array的整型数组,那么就应该是这样:int[] int_array,或者这样:int
int_array[]。 同理,String[] sarray 我们就有了一个名为sarray的字符串数组。double[] darray
我们就有了一个名为darray的浮点型数组。有的程序员喜欢第二种声明方式,而本人则喜欢第一种声明方式,因为第一种声明方式明确的告诉了我们那是一个
数组,而且后面紧跟数组名,分的很清楚。况且,第二种方式更像C++,我本人比较不同意程序员把一个程序语言的习惯带到别的程序语言中,尽管有时候这样也
不会出现语法错误。
有一点需要注意,那就是,声明了一个数组,仅仅是声明,你仅仅是有了这么一个名称而已,你可以认为计算机为你的这个数组开辟了一个新的内存地址,但里面没 有任何东西。由于没有初始化,所以你的这个数组现在是徒有其表,如果你在声明之后,没有初始化就想马上使用这个数组,java就会报错,比如这样:
我们看到,这个程序无法通过编译,观察错误信息,是这样的:variabl a might not have been initialized,就是说,变量a也许还没有被初始化。我们知道,不是也许,真的就没有初始化。其实不光是数组,任何一个数据,如果你只是声明,那 是不能直接使用的。
好了,下面我们来看看,如何初始化一个数组呢?初始化数组常见的有如下方式:
1. 数组名 = new 类型名[数组长度] (此数组已经被声明过)
数组名 = {数据1, 数据2, 数据3, ......, 数据n} (此数组已经被声明过)
数组名 = new 类型名[]{数据1, 数据2, 数据3, ......, 数据n} (此数组已经被声明过)
2. 类型名[] 数组名 = new 类型名[数组长度] (声明和初始化一起进行)
类型名[] 数组名 = {数据1, 数据2, 数据3, ......, 数据n}(声明和初始化一起进行)
类型名[] 数组名 = new 类型名[]{数据1, 数据2, 数据3, ......, 数据n}(声明和初始化一起进行)
3. 类型名 数组名[] = new 类型名[数组长度] (声明和初始化一起进行)
类型名 数组名[] = {数据1, 数据2, 数据3, ......, 数据n}(声明和初始化一起进行)
类型名 数组名[] = new 类型名[]{数据1, 数据2, 数据3, ......, 数据n}(声明和初始化一起进行)
4. 在已经声明过数组的前提下,使用循环或者其他操作来给数组初始化或者赋值。
总结一下,最后一种,我们暂且不提,而前三种形式,其实就是,初始化数组的时候,等号左边有三种格式,等号右边也有三种格式。对于数组来说,最常见的使用 方式是这样的:类型名[] 数组名 = new 类型名[数组长度],比如说:double[] floatarray = new double[100],这样我们就声明并初始化了一个长度为100,名字为floatarray的double型数组。
然而,如果我们以不同的方式初始化一个数组,数组里所含的内容是如何的呢?如果只是给出了数组的长度,而并没有显示的给出数组中的数据,那么,如果数组类 型是double,那么里面的数都是0.0,如果数组类型是int,那么里面的数据都是0,如果数组类型是String,那么里面的数据都是null(空 的意思),如果数组类型是boolean,那么里面的数据都是false。但是如果显示的给出了数据,那么我们不需要给出数组长度,java将自动获得数 组长度,而且里面的数据也都已经有了,我们看一下下面这段测试的程序:
我们看到,除了最后一个外,其他几个数组的内容,都有java按照默认方式进行了初始化,看起来似乎最后一种方式更好,但是实际上,最后一种方式并 不常用,因为一般里说,数组在刚开始定义的时候其内容并不确定,往往是需要在程序中动态的进行赋值,所以,让java给自动赋值,实际上只是走走形式,让 这个数组能够使用而已。
好了,今天我们讲了数组的声明以及初始化的基础知识,以后我们会讲数组的操作。希望各位初学者和本菜鸟一起努力练习,共同进步。