数组

it2022-05-05  187

数组是引用类型的变量

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数组-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数组-0719/Course4.java


最新回复(0)