数组基础操作的JAVA实现

it2022-05-05  152

数组:(引用类型的变量) 定义语法:int[] a; int a[]; 赋值:int[] a={1,2,3,4,5}; Int[] a=new int[5]; //默认值 //0的类型含义 如果元素没有初始化,元素的值就是元素类型默认值

Int[] a=new int []{1,2,3,4,5};

四种变量: 形参 (栈) int [] a=null; 局部变量 (栈) int [] a={1,2,3,4,5}; 属性 (堆) int [] b =a; 静态属性 (方法区) b[0]=10;a[0]=1; 引用的方法调用: 1.是值传递,形参的改变不会影响实参(改值or改线索) 2.引用类型是个线索,用来找到堆中真正的数据

数组的访问通过索引完成。即:“数组名称[索引]”,注意:数组索引从0开始,因此可以采⽤ 的索引范围就是0~索引-1;假设现在开辟了3个空间的数组,那么可以使⽤的索引是:0、 1、2。如果访问超过索引访问,那么会产 ⽣"java.lang.ArrayIndexOutOfBoundsException"异常信息。当数组采⽤动态初始化开辟空间之后,数组之中的每个元素都是该数据类型的默认值;数组本身是⼀个有序的集合操作,所以对于数组的内容操作往往采⽤循环的模式完成。(数 组是⼀个有限的集合,采⽤for循环)在Java中有⼀种动态取得数组⻓度的⽅法:数组名称.length; 数组属于引⽤数据类型,因此在使⽤之前⼀定要开辟空间(实例化),否则就会产⽣ NullPoninterException

import java.util.Arrays; //交换数组指定下标元素的值 public class Course0718 { public static void swap(int[] a, int i, int j) { int t = a[i]; a[i] = a[j]; a[j] = t; }

// a.length 获取数组长度 //在数组中查找关键字v;找到返回下标,找不到返回-1; public static int indexOf(int[] a, int v) { for (int i = 0; i < a.length; i++) { if (a[i] == v) { return i; } } return -1; } //将数组中的所有值置为v; public static void fill(int[] a, int v) { for (int i = 0; i < a.length; i++) { a[i] = v; } } //新数组,长度大补零,长度小截取原来的数组 public static int[] copyOf(int[] original, int newLength) { int[] dest = new int[newLength]; int length = original.length <= newLength ? original.length : newLength; for (int i = 0; i < length; i++) { dest[i] = original[i]; } return dest; } //二分法查找关键字,找不到返回-1;(前闭后开) // 前提需要数组是有序的 public static int binarySearch(int[] a, int v) { int left = 0; int right = a.length; while (left < right) { int mid = (left + right) / 2; if (v == a[mid]) { return mid; } else if (v < a[mid]) { right = mid; } else { left = mid + 1; } } return -1; } //前闭后闭 public static int binarySearch2(int[] a, int v) { int left = 0; int right = a.length - 1; while (left <= right) { int mid = (left + right) / 2; if (v == a[mid]) { return mid; } else if (v < a[mid]) { right = mid - 1; } else { left = mid + 1; } } return -1; } public static void main(String[] args) { int[] a = { 1, 2, 3, 4, 5 }; // 交换下标 0 和 下标 3 的数据 System.out.println(a); System.out.println(Arrays.toString(a)); //fill(a, 1); //Arrays.fill(a, 2); //swap(a, 0, 3); copyOf(a, 10); System.out.println(Arrays.toString(Arrays.copyOf(a, 10))); int[] b = new int[10]; System.arraycopy(a, 0, b, 5, 5); System.out.println(Arrays.toString(b)); }

}


最新回复(0)