Java学习第一阶段
数组:是一种数据类型(引用类型),相同数据类型元素的集合
-
定义
//声明一个整型数组,长度为10 int[] arr = new int[10];
-
初始化
-
静态声明
int[] arr = {1,2,3,4,5};//在声明的同时赋值(初始化) int[] arr = new int[]{1,2,3,4,5};
-
动态声明
int[] arr = new int[5];//先声明,在赋值 arr[0] = 1;//下标从0开始 arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5;
-
-
访问:访问的是数组中的元素
-
通过数组名.length来获取数组的长度(元素的个数)
int[] arr = new int[]{1,2,3,4,5}; System.out.println(arr.length);//5
-
通过数组下标来访问数组的元素
int[] arr = new int[5]; arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; System.out.println(arr.length-1);//输出数组最后一个元素的值
-
-
遍历:通过循环(三种皆可,一般用for)从头到尾挨个走一遍
int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] = i;//把每个元素的下标赋值给它 }
补充:数组元素的默认值:整形:0;浮点型:0.0;布尔型:false;字符串型(引用类型):null
异常:ArrayIndexOutOfBoundsException:数组下标越界异常
数组元素下标从0到长度减一,超出则报异常
-
数组的复制与扩容
-
复制
int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] = i;//把每个元素的下标赋值给它 } int[] b = new int[8]; System.arraycopy(arr,4,b,0,5); System.out.println(Arrays.toString(b));//打印b数组 //[4, 5, 6, 7, 8, 0, 0, 0] //arraycopy(arr,4,b,0,5); //第一个元素:arr 代表原数组 //第二个元素:4 代表原数组下标,意为从这个下标代表的元素开始复制 //第三个元素:b 代表目标数组 //第四个元素:0 代表目标数组下标,意为在这个下标代表的元素开始复制 //第五个元素:5 复制长度如上例长度为5,即4,5,6,7,8五个元素 如果长度超过目标数组 //ArrayIndexOutOfBoundsException:数组下标越界异常 int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] = i;//把每个元素的下标赋值给它 } int[] b = Arrays.copyOf(arr,8);//把arr从第一个元素开始,以目标长度8为界,复制为b数组 System.out.println(Arrays.toString(b)); //和第一种比,好处为不会报异常,但是不够灵活
-
扩容
int[] arr = new int[10]; for (int i = 0; i < arr.length; i++) { arr[i] = i;//把每个元素的下标赋值给它 } arr = Arrays.copyOf(arr,arr.length+1);//创建了一个新数组,长度为原长度加一(数组一旦创建不能改变)
-
-
数组的排序
Arrays.sort(arr);//系统自带排序,默认为升序(从小到大)
扫描器:scanner的使用
- 导入扫描仪import java.util.Scanner;
- 新建一个扫描仪叫scan Scanner scan = new Scanner(System.in);
- 用扫描仪扫描一个整数赋值给age int age = scan.nextInt();
- 一般会关掉扫描仪scan.close();