JAVA知识碎片整理-----数组

来源:互联网 发布:双开软件哪个好 编辑:程序博客网 时间:2024/05/22 00:42

一:数组的概念

数组的本质是相同数据类型的变量的集合,数组的每一个元素可以通过唯一的索引值(下标)来访问。

二:数组的声明

语法:type arrayName  [ ] ;   或者 type [  ]  arrayName ; 

推荐使用第二种方式,[ ]表示数组,其后面跟上数组名更加具有意义。

[ ] 也叫索引运算符,其中可以指定数组的索引值,但在声明时不允许指定数组的大小,即[ ] 中什么也不能添加。

三:数组的创建

数组的创建有三种方式:分为两类,静态初始化和初始化。

1)int [ ] a = { 1,3,5,6,5 }(静态初始化)

2)int [ ] a = new int [ 10 ] (动态初始化,手动给定数组长度,由系统给定初始值)

3)int [ ] a = new int [ ] {1,3,4,2,5} (动态初始化,手动给定初始值,由系统计算数组长度)

无论哪种实例化方式,数组一旦被创建,数组的长度便确定了,不能被更改。

注意:!!! 第一种方法创建数组在运行时会被编译成以下代码

  int a[] = new int [5];a[0]=1;a[1]=3;a[2]=5;a[3]=6;a[4]=5;
这是因为java虚拟机不支持任何形式的高效率的数组初始化。所以第一种方法并不是在编译时进行创建和初始化的,而是在运行时被创建和初始化的。

数组的初始化:

如:第二种方式创建的数组,其内的数组元素并不是null(空),而是0,对于不同数据类型的数组其默认初始值是不同的。

int byte short long --- 0     double float ------>0.0   char------空格  boolean------ false   注意String数组的默认值为null,因为String 为引用数据类型,其内存的是一个个String对象,同理,Integer Double  等基本数据类型的包装类的数组,其默认值也为空(null)

四:数组的访问和修改

访问语法:arrayName [ indexValue] ;  例如 :a [2]  修改时便是在其后直接赋值如 a[2] = 3;

数组的索引是从0开始的,数组的索引值范围为0---数组长度-1(a.length-1) ,否则会引发ArrayIndexOutOfBoundsException(数组索引越界)异常。

数组元素被存储在一块连续的内存中。

五:数组的遍历

数组的遍历有多种方式,如for循环,for-each循环(java 1.5 添加的),

 

int [] a={1,3,5,2,6,5};//传统for循环for(int i=0;i<a.length;i++){System.out.print(a[i]+"  ");}System.out.println();//增强for循环for (int i : a) {System.out.print(i+" ");}

六:多维数组

1)二维数组  int [ ]  [ ]  a= new int [5 ]  [ 3] 

表示实例化了一个5行3列的二维数组

int [ ] [ ] a = { {2,4}, {2,8} ,{3,6}}  初始化了3行2列的数组

2)二维数组的遍历

可以使用双层foreach循环

int [] [] f = { {2,4}, {2,8} ,{3,6}};for (int[] is : f) {for (int i : is) {System.out.print(i+" ");}System.out.println();}

  注意::第一层循环出来的是一个int类型的数组。

另外:::除了矩形数组外,还有非矩形数组如:int  [ ] [ ] b= { {4,3,4},{3,3,4,5,6,6}}就是一个非矩形数组

注意:使用new关键字初始化非矩形数组时列大小不写,行大小不能省如 int [ ] [ ] a = new int [3] [ ] ;

七:数组的拷贝

int [] a={1,3,5,2,6,5};int [] acopy=a.clone();//修改新数组验证是否是新数组acopy[2]=100;System.out.println(Arrays.toString(a));System.out.println(Arrays.toString(acopy));


通过调用数组对象的clone()方法完成数组的copy,该方法实现的是数组的浅复制。

八:数组的类表示

通过数组对象的 getClass().getName() 来获取数组类的名字

int-----[ I    float----[ F   String----[ Ljava.lang.String    二维int类型的数组------[ [ I   


原创粉丝点击