数组
1**.定义**:int[] a;
2.赋值:
(1)int[] a={1,2,3,4,5};
(2)int[] a=new int[] {1,2,3,4,5};//静态初始化
(3)int[] a=new int[5];
(数组的值为默认值 (0的类型含义)
如果数组中的元素没有初始化,那么元素的值就是元素类型的默认值。)
//动态初始化
(4) Int[] a=null; // 只定义了一个数组类型的引用变量,
//没有数组对象
//a没有任何指向对象
(5)当数组开辟空间之后,就可以采⽤如下⽅式进⾏操作:
- 数组的访问通过索引完成。即:“数组名称[索引]”,注意:数组索引从0开始,因此可以采⽤的索引范围就是0~索引-1;假设现在开辟了3个空间的数组,那么可以使⽤的索引是:0、
1、2。如果访问超过索引访问,那么会产 ⽣"java.lang.ArrayIndexOutOfBoundsException"异常信息。 - 当数组采⽤动态初始化开辟空间之后,数组之中的每个元素都是该数据类型的默认值;
- 数组本身是⼀个有序的集合操作,所以对于数组的内容操作往往采⽤循环的模式完成。(数
组是⼀个有限的集合,采⽤for循环)
(6)匿名数组
顾名思义,数组没有引用变量
3.引用类型:
找到数组的线索
这里类型就牵扯到变量
变量:
形参 栈区
局部变量 栈区
属性 堆区
静态属性 方法区
数组对象一定在堆区
注意:
(1)引用类型是个线索,用来找到堆中的真正数据
(2)引用的方法调用也是值传递,形参的改变不会影响实参
(3)特性:java中的垃圾回收(GC);
(4)垃圾:没有引用指向的对象(数组)
Arrays.copyOfRange
Arrays.toString
数组最大缺陷:长度固定,存在越界问题
操作:
(1)根据下标访问对应的元素 a[index]
如果访问的数组数组为空,会抛出NullPointerException异常
如果访问越界,会抛出ArrayIndexOutOfBoundsException异常
(2)获取数组长度 a.length
int[] a={1,2,3,4,5};
int[] b=a; //b也指向a指向的数组对象
b={5,6,7,8}; // b重新指向一个数组对象,不会影响a和a指向的对象
b[0]=100; //改变的是b指向的数组对象的内容,会影响的a指向的数组对象的内容
数组的遍历:
1.For(int element: a){
Element
}; //foreach
3.for(int i=0;i<a.lenght;i++)
{
System.out.println(a[i]);
}
Jdk支持的一些数组操作:
Import java.util.Arrays;
Java.long.System(包)
Arrays.fill(int[] a,int v);
Arrays.copyOf(int[] a,int newLenghth);
Arrays.copyOfRange(int[]a ,int from,int to);
多维数组
二维数组:
int[][] a={{1,2,3},{4,5},null};
Java中多维数组存的元素类型是引用,所以可以有阶梯状的数组。