一.1维数组
概念:
1.存储多个数据(一组数据的容器) 2.元素:数组中数据 3.下标/索引:元素的编号,从0开始
数组的声明:
数据类型 [ ] 数组名;
数组的初始化:
1.静态初始化:初始化时,数据由程序员给定,长度由系统自动分配 2.动态初始化:初始化时,长度由程序员给定,数据由系统分配默认值
//动态初始化 String[] names = new String[5]; 或者 String[] names; names = new String[5];
整数类型默认:0 浮点类型默认:0.0 字符类型默认:' ' 布尔类型默认:false 引用类型默认:null(空)
注意:
1.数组是引用数据类型 2.数组可以存储多个数据(这个是和变量最大的不同) 3.数组一旦初始化后,长度不可以改变
数组的排序:冒泡排序
口诀:
N个数字来排队 两两相比,小靠前 外层循环N-1 内层循环N-1-i
int[] is = {45,69,32,28,52,18}; for(int i = 0;i<is.length-1;i++){//冒泡排序 for(int j = 0;j<is.length-1-i;j++){ if(is[j] > is[j+1]){ int temp = is[j]; is[j] = is[j+1]; is[j+1] = temp; for(int num : is){//遍历输出 System.out.println(num);
数组的扩容:
含义:新建一个数组,给予新的长度,将原数组数据拷贝过去即可。
//原数组 String[] names = {"北条麻衣","易烊千玺","肖战","王一博"}; //新数组 String[] newNames = new String[names.length*2]; //将原数组中的数据设置到新数组中 for(int i = 0;i<names.length;i++){ newNames[i] = names[i]; } //将新数组的地址赋值给原数组的引用 names = newNames; //遍历原数组 for(String str : names){ System.out.println(str);
数组的删除:
太过简单,此处不做讲解
Arrays工具类:
含义:Java提供的专门操作数组的工具类
工具类:该类里的所有方法都是静态的
API:Java类的使用说明书
int[] is = {45,69,32,28,52,18}; //排序(18,28,32,45,52,69) Arrays.sort(is); //查找(返回值:如果key在数组中,就返回数组的下标;否则返回 -插入点-1) int index = Arrays.binarySearch(is,56); System.out.println("下标为:" + index); //替换 //Arrays.fill(is,888); //替换局部:从开始下标处(包含)替换到结束下标处(不包含) //Arrays.fill(is,1,4,666); //将数组转换为字符串 String str = Arrays.toString(is); System.out.println(str);
二.2维数组
含义:
二维数组中包含了多个一维数组
数组的声明:
数据类型 [ ] [ ] 数组名;
数组的初始化:
1.静态初始化:数据由程序员指定,长度由系统自动分配 2.动态初始化:长度由程序员指定,数据由系统赋默认值 整数类型:0 浮点类型:0.0 字符类型:' ' 布尔类型:false 引用类型:null
//通关下标获取元素 String str = names[0][1]; System.out.println("通关下标获取元素:" + str); //获取长度 System.out.println("获取二维数组中一维数组的个数:" + names.length);//2 System.out.println("获取二维数组中第一个一维数组元素的个数:" + names[0].length);//3 System.out.println("获取二维数组中第二个一维数组元素的个数:" + names[1].length);//4 System.out.println("--------------"); //遍历思路:循环取出一维数组,再循环取出一维数组的元素 //遍历 -- for for (int i = 0; i < names.length; i++) { for (int j = 0; j < names[i].length; j++) { System.out.println(names[i][j]); } } System.out.println("--------------"); //遍历 -- foreach for (String[] ss : names) { for (String s : ss) { System.out.println(s); } }