Java学习笔记-数组操作

数组概述 数组的定义

数组是相同类型数据的有序集合

数组描述的是相同类型的若干个数据,按照一定的先后循序排列组合而成。

其中,每一个数据称作一个数组元素,每个数组元素可以通古通过一个下标来访问他们

数组声明创建

声明数组变量的语法:

dataType[] arrayRefVar; // 首选方法 dataType arrayRefVar[]; // 效果相同,但不是首选方法

java使用new操作符来创建数组,语法如下:

dataType[] arrayRefVar = new dataType[arraySize];

数组的元素是通过索引访问的,数组索引从0开始

或者数组长度的: arrays.length;

三种初始化 静态初始化 int[] a = {1, 2, 3}; Man[] mans = {new Man(1, 1), new Man(2, 2)}; 动态初始化 int[] a = new int[2]; a[0] = 1; a[1] = 2; 默认初始化

数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量的方式被隐式初始化。

数组使用

通过下标来访问数组中的元素。

遍历

遍历是依次取出数组中的每一个元素。

普通for循环遍历

语法:

for(int i = 0; i < 数组的长度; i++){ 数组中元素的类型 变量 = 数组名[i]; } 增强型for循环遍历

语法:

for(数组中元素的类型 变量名:数组名 ){ 数组中的元素类型 临时变量 = 变量; } 空指针异常

当一个变量为null(没有赋值)时,我们去调用了该变量的属性和方法。就会提示java.lnag.NullPointerException

下标越界

当访问超过数组长度的下标时,就会出现下标越界。java.lang.ArrayIndexOutOfBoundsException

Arrays类

用来操作数组(比如排序和搜索)的各种方法

常用的一些方法:

1、使用二分法查找 Arrays.binarySearch(int[] array, int value);

public static void main(String[] args) { int[] nums_1 = {10, 20, 30, 40, 50, 60}; // 第一个参数是被查找的数字,第二个参数是需要查找的数 int index = Arrays.binarySearch(nums_1, 60); System.out.println("下标是:" + index); }

2、数组内容转成字符串的形式输出 Arrays.toString(int[] array);

public static void main(String[] args) { int[] nums_1 = {10, 20, 30, 40, 50, 60}; System.out.println(Arrays.toString(nums_1)); }

3、数组排序 Arrrays.sort(int[] array);

public static void main(String[] args) { int[] nums_2 = {31, 35, 43, 4, 88, 62}; // 在原数组的基础上进行排序,不返回新的数组对象 Arrays.sort(nums_2); System.out.println(Arrays.toString(nums_2)); }

4、复制指定的数组

public static void main(String[] args) { int[] nums_2 = {31, 35, 43, 4, 88, 62}; // 第一参数是需要被复制的数组,第二个参数是返回的新数组的长度 int[] nums_3 = Arrays.copyOf(nums_2, 10); // 结果:[31, 35, 43, 4, 88, 62, 0, 0, 0, 0] System.out.println(Arrays.toString(nums_3)); int[] nums_5 = new int[10]; // 第一个参数是原数组,第二个参数是原数组的起始位置 // 第三个参数是新数组,第四个参数是新数组起始位置,第五个参数是要复制原数组的元素个数 System.arraycopy(nums_2, 0, nums_5, 0, nums_2.length); // 结果:[31, 35, 43, 4, 88, 62, 0, 0, 0, 0] System.out.println(Arrays.toString(nums_5)); // arraycopy性能优于Array.copyOf. 因为copyOf 基于arraycopy实现 }

5、判断两个数组的值是否相等 Arrays.equals(int a, int b);

public static void main(String[] args) { int[] nums_1 = {10, 20, 30, 40, 50, 60}; int[] nums_2 = {31, 35, 43, 4, 88, 62}; System.out.println(Arrays.equals(nums_1, nums_2)); }

6、使用指定元素填充数组 Arrays.fill()

public static void main(String[] args) { int[] nums_6 = new int[10]; Arrays.fill(nums_6, 1); // 结果:[1, 1, 1, 1, 1, 1, 1, 1, 1, 1] }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgyjxj.html