数组
引用类型的变量
定义语法
int[ ] a;
赋值
int[ ] a = {1,2,3,4,5};
int[ ] a = new int[5];
如果数组中的元素没有初始化,元素的值就是元素类型的默认值
int[ ] a =new int[ ] {1,2,3,4,5};
引用类型是什么
找到数组的线索
变量有四种
形参 栈
局部变量 栈
属性 堆
静态属性 方法区
1.引用类型是个线索,用来找到堆中真正数据
2.引用类型也是值传递,形参的改变不会影响实参
java中垃圾回收(Garbage Collection) Garbage Collector (GC)
谁是垃圾?
没有使用价值;没有引用指向的对象(数组)
a.length 返回数组的长度
int[ ] a = null; a引用没有指向任何数组
错误:
ArrayIndexOutOfBoundsException 下标越界
int[ ] a =null; a[0] =100; NullPointerException
变量 数组类型的引用
堆上 实际存储数组对象
定义
int[]
double[]
int/double 元素类型/数据类型(Element Type)
赋值
int[] a = {1,2,3,4,5}; //只能在初始化的时候使用
int[] a = new int[5];
int[] a = new int[] {1,2,3,4,5};
int[] a = null; //只定义了一个数组类型的引用变量,没有数组对象,a没有指向任何数组
数组的遍历
int[] a = {1,2,3,4,5};
for(int i = 0;i
a[i];
}
for(int element : a) {
element;
}
理解什么是引用:
1. 引用是用来找到实际对象的线索
2. java内存中有3个区域
1) 栈区 2) 堆区 3) 方法区
3. 4种形式的变量
1)形参 2)局部变量 栈区
3)属性 堆区
4)静态属性 方法区
4. 一些操作的理解
int[] a = {1,2,3,4,5};
int[] b = a; // b也指向a指向的数组对象
1) b = {10,11,12}; //b重新指向新的数组对象,不会影响a和a指向的对象
2) b[0] = 100; //改变的是b指向的数组对象的内容,会影响a
5. 方法调用过程中(无论是基本数据类型还是引用数据类型)
java都是值传递,所有形参的改变都不会影响实参
JDK支持的一些数组操作
java.util.Arrays 包
先导入才能使用(如何导入? import.java.util.Arrays;)
java.long.System 包
System.arraycopy(源数组引用,源下标,目标数组引用,目标下标,长度);
Arrays.fill(int[] a, int v);
Arrays.copyOf(int[] a,int newLength);
Arrays.copyOfRange(int[] a,int from,int to); //a[from,to)
Arrays.toString(a); //方便打印
Arrays.binarySearch(int[] a,int v);