数组的内存结构:数组在内存中是一块连续的空间,用于存储相同类型的数据
数组基本要素:
-
数组名:用于标识数组的标识符
-
数组元素:数组元素是存储在数组中的数据
-
数组类型:数组类型是数组中元素共同的类型
-
数组下标:数组下标是数组中的元素的标识符,一般从0开始
数组的内涵:
-
数组是有序的元素序列
-
数组长度是固定的
-
数组是一种数据结构
数组的外延:
-
按维度
-
一维数组
-
二维数组
-
三维数组
-
-
按类型
-
基本数据类型数组
-
byte、short、int、long、float、double、char、boolean
-
-
引用数据类型数组
-
数组的优缺点:
-
优点:
-
按照下标(索引)查询元素速度快
-
能存储大量数据
-
按照下标(索引)遍历数组方便
-
-
缺点:
-
数组的大小一经确定不能改变
-
一个数组只能存储一种类型
-
增加、删除元素效率慢
-
一维数组的内涵与外延:
-
内涵:
-
一维数组可以表示一行或一列数据
-
数组中元素都有一个下标
-
-
外延:
-
整型一维数组
-
浮点型一维数组
-
字符串一维数组
-
。。。。。。
-
一维数组的声明:
语法: 数据类型 [ ] 数组名称;
或 (声明数组时不能规定数组长度)
数据类型 数组名称[ ];
一维数组的分配空间:
数据类型 [ ] 数组名 = new 数据类型 [大小]
什么是foreach: foreach循环是用于遍历数组和集合的,增强版的for循环结构。
为什么使用foreach:(优点)
-
遍历更加简洁
-
完全隐藏下标
-
完全隐藏迭代器
语法结构:
for( 数据类型 变量名 :数组名称) {
//直接使用变量
}
冒泡排序:
冒泡排序是对相邻的元素进行两两比较,顺序相反则进行交换,不断重复直到元素全部有序的排序算法。
如何进行冒泡排序:
Arrays类:是提供对数组进行排序、查询和修改等操作方法的工具类
Arrays类的内涵:
-
Arrays类位于java.util包
-
Arrays类提供操作数组的方法
-
如排序、查询
-
Arrays类的sort()方法:通过快速排序算法对数组进行升序排列
-
Arrays.sort(数组名);
-
-
总结:
二维数组
二维数组定义:二维数组是使用两个下标访问的,以一维数组作为数组元素的数组。
二维数组的声明:
声明的语法:
数据类型[ ][ ] 数组名称;
或
数据类型 数组名称[][];
int[ ][ ] arr; //声明不指定列长度
或
int arr[ ][ ];
声明同时初始化:
数据类型[ ][ ] 数组名={{值 1,值 2},{值 3,值 4}};
或
数据类型[ ][ ] 数组名=new 数据类型[ ][ ]{{值 1,值 2},{值 3,值 4}};
int[ ] m = {92,89,78};int [ ][ ] arr= new int[ ][ ]{ new int[]{90,91,79} , m , {93,88,77} }(3种方式都表示一个一维数组)
声明后初始化:
数据类型 数组名[ ] [ ]=new 数据类型[一维长度][二维长度];示例:int[ ][ ] arr=new int[4][3];
二维数组基本要素:
-
数组名
-
数组元素
-
数组类型
-
数组下标 (从0行0列开始)
-
下标可以是变量,常量,表达式表达的整数
-
arr[0][0]、scores[i][j]、scores[i+j][4]
-
-
二维数组元素的赋值:
二维数组的长度:
-
arr.length一维的长度
-
arr[0].length二维的长度
二维数组的遍历:
public class DoubleArray {
public static void main(String[] args) {
int[][] arr={{90,91,79},{92,89,78},{93,88,77},{98,94,75}}; //声明二维数组
for(int i=0;i<arr.length;i++){ //获取二维数组的行数
for(int j=0;j<arr[i].length; j++){ //获取二维数组的列数
System.out.print(arr[i][j]+" "); //获取二维数组第 i 行 j 列的元素
}
System.out.println();
}
}
}
多维数组的内涵和外延:
-
内涵
-
多维数组的本质是一维数组
-
多维数组是数组嵌套数组
-
内存中以一维数组形式存放
-
数组中元素的下标个数与维度相同
-
-
外延
-
三维数组
-
四维数组
-
N维数组
-