数组是引用类型的变量
1.定义:
数据类型 [] 数组名;如int[] array; 也可以采用C中方式定义int a[],但是不推荐
赋值:
- 初始化时赋值(静态初始化) int[] a = {1,2,3,4,5};缺点:数组长度固定
- 动态初始化
int[] a = new int[5];
//默认值(0的类型含义)如果数组中的元素没有初始化,元素的值就是元素类型的默认值
如 int[] a = new int[] {1,2,3,4,5};
2.什么是引用类型?
1)引用类型是个线索,用来找到堆中的真正数据
2)引用类型也是值传递,形参的改变不会影响实参的值
int[] a = null;//只定义了一个数组类型的引用变量,没有数组对象,a没有指向任何数组
int[] a = {1,2,3,4,5}; int[] b = a;//b和a指向数组,若是b[0]=10,则a[0]=10;
public static void method1(int[] a){
a = new int[] {11,12,13,14,15};//生成新数组
}
public static void method2(int[] a){
a[0]=10;//改变数组的值
}
public static void main(String[] args){
int[] a = {1,2,3,4,5};
method1(a);//调用结束后a的值是{1,2,3,4,5},没有改变
method2(a);//a={10,2,3,4,5}
}
public static void swap(int[] a, int i, int j) {
int t = a[i];
a[i] = a[j];
a[j] = t;
}
public static void main(String[] args) {
int[] a = { 1, 2, 3, 4, 5 };
// 交换下标 0 和 下标 3 的数据
System.out.println(a);
}
3.变量:形参,局部变量-->栈, 属性-->堆 ,静态属性-->方法区
4.java中垃圾回收GC(Garbage Collection)
什么是垃圾?没有引用指向的对象(如数组)
5.编译错误:下标越界 "java.lang.ArrayIndexOutOfBoundsException"异常信息
int [] a = null; a[0] = 100;//数组属于引用数据类型,因此在使用之前一定要开辟空间(实例例化),否则就会产生
NullPoninterException;
6.匿名数组:binarySearch(new int[] {1,2,3,4,5},3)
数组操作:求数组长度 int[] a a.length(是对属性的访问)
求字符串长度 String s s.length()(是对方法的调用)
数组遍历:1)for循环 for(i=0;i<a.length;i++){ a[i]; }
2)foreach形式 for(element : a){ element; } //java版本不同可能不支持
java内存中有3个区域:栈区 ; 堆区 ; 方法区(对象一定存在堆区,变量根据形式不同存放区域不同)
JDK支持的数组操作:
java.util.Arrays 包,先导入才能使用import java.util.Arrays
java.lang.System 包
7.二维数组的数据类型是引用类型
多维数组存的元素类型是引用,可以有阶梯状的数组(数组列数可以不同)
8.练习代码:包括交换数组元素,查找元素,复制数组,二分查找,数组置为指定值
https://github.com/Consini/JavaSE/blob/master/Course3%E6%95%B0%E7%BB%84-0718/Course3.java
练习:1)将偶数放在前面,奇数放在后面。
2)旋转数组
public static boolean[] copyOfRange(boolean[] original,int from, int to)
//将数组original的从from(包含)到to个元素复制到新数组中,返回的数组长度为to-from
public static void arraycopy(Object src,// 源数组。
int srcPos,//源数组中的起始位置。
Object dest,//目标数组
int destPos,//目的地数据中的起始位置。
int length)//要复制的数组元素的数量。
3)求数组去掉最大值和最小值后的平均值
4)冒泡排序
https://github.com/Consini/JavaSE/blob/master/Course4%E6%95%B0%E7%BB%84-0719/Course4.java