DSP

Java SE 之数组的定义与使用

2019-07-13 16:22发布

数组的定义与使用 目前对于数组来说最大的缺陷就是:数组长度是固定的,可能会产生范访问越界 数组的基本概念
    数组动态初始化 (声明并开辟数组)
    只声明不赋值:数据类型[] 数组名称 = new 数据类型 [长度]
    数组动态初始化开辟空间后,若不对其进行赋值,数组的每个元素都是该数据类型的默认值
    int[] stu = new int[5];//长度为5 的数组     int[] stu = null;
    stu = new int[5];
//分布式进行数组实例化     对数组进行数据操作:
数组的数据访问通过下标完成,即:数组名称[下标],要注意下标的范围如果索引下标超过了数组的长度,会出现数组越界异常,java.lang.ArrayIndexOutOfBoundsException: 5 int[] stu = new int[]{2,4,5,7,9}; System.out.println(stu[5]); stu.length;//取得数组长度 数组属于引用数据类型,因此在使用之前一定要开辟空间(实例化),否则就会产生NullPoninterException 数组引用传递:
数组是引用数据类型,可以发生引用传递
int[] x = null ; int[] temp = null ; //数组的声明 x = new int[3] ;//对数组分配堆内存空间 System.out.println(x.length) ; x[0] = 1 ; // 数组第一个元素 x[1] = 2 ; // 数组第二个元素 x[2] = 3 ; // 数组第三个元素 for (int i = 0; i 引用传递实际上就是:同一块堆内存被不同的栈内存指向 数组静态初始化:数据类型[] 数组名称 = new 数据类型 [长度]{赋值}
    完整格式:int[] stu = new int[5] {1,2,3,4,5};
    简化格式:int[] stu = {1,2,3,4,5}; 匿名数组:new int[]{1,22,333,4444,55555};
匿名数组也可以通过length得出长度:
    System.out.println(new int[]{1,2,33,444,56}.length);//输出5 数组的使用: 数组的引用数据类型,所有的引用数据类型都可以为其设置多个栈内存指向,对于数组的操作也可以通过方法进行处理 方法接收数组: //方法接收数组 public static void main(String[] args){ int[] arr = new int[]{1,3,5,7,9}; PrintArray(arr); } public static void PrintArray(int[] data){ for(int i=0; i 方法返回数组: //方法返回数组 public static void main(String[] args){ int[] arr = init(); PrintArray(arr); } public static int[] init(){//返回值类型为数组 return new int[]{1,3,5,7,9}; } public static void PrintArray(int[] data){ for(int i=0; i 方法修改数组: //方法修改数组 public static void main(String[] args){ int[] arr = init(); change(arr); PrintArray(arr);//6 ,8 ,10 ,12 ,14 } public static int[] init(){ return new int[]{1,3,5,7,9}; } public static void change(int[] data){//对数组数据进行+5操作 for(int i=0; i Java对数组的支持:
    
数组排序(升序)java.util.Array.sort(数组名称) public static void main(String[] args){ int[] arr = new int[]{66,3,46,25,95,37}; char[] tmp = new char[]{'n','d','o','r','g'}; java.util.Arrays.sort(arr); java.util.Arrays.sort(tmp); PrintArray(arr); PrintArray(tmp);//输出结果3 25 37 46 66 95 d g n o r } public static void PrintArray(int[] data){ for(int i=0; i 数组拷贝:(将原数组拷贝到目标数组里)
System.arraycopy(原数组名称,原数组开始点,目标数组名称,目标数组开始点,拷贝长度)
    原数组arr1:1,2,3,4,5,6,7
    目标数组arr2:11,22,33,44,55,66,77
    拷贝之后结果:11 22 3 4 5 6 77 //数组拷贝 public static void main(String[] args) { int[] arr1 = new int[]{1,2,3,4,5,6,7}; int[] arr2 = new int[]{11,22,33,44,55,66,77}; System.arraycopy(arr1,2,arr2,2,4); PrintArray(arr2); } public static void PrintArray(int[] data){ for(int i=0; i