数组的概述
1.数组的理解
数组array是多个相同类型数据按照一i的那个顺序排列的集合,并使用同一个名字命名,并通过编号的方式对这些数据进行统一的管理。
2.特点
数组是有序排列的
数组属于引用类型的变量,数组的元素,可以是基本数据类型,也可以是引用数据类型
创建数组对象在内存中开辟一整块连续的空间
数组的长度一旦确定,就不能修改
3.数组的分类
按照维数:一维数组,二维数组、、、、
按照元素的类型:基本数据类型元素的数组、引用数据类型元素的数组
4.数据结构
数据与数据之间的逻辑关系:集合、一对一、一对多…
数据的存储结构:
线性表:顺序表、链表、栈、队列
树形结构:二叉树
图形结构
5.算法
排序算法
搜索算法
一维数组
一维数组的声明与初始化
静态初始化:
Int[] arr=new int[]{1,2,3};
Int[] arr={1,2,3};(类型推断)
动态初始化:
Int[] arr=new int[3];
数组的引用
通过角标的方式引用,从0开始,到数组的长度(arr.length)-1结束
arr[0]=”王鸥”;
arr[1]=”易烊千玺”;
arr[2]=”高露”;
数组的属性
System.out.println(arr.length);
数组的遍历
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
一维数组的默认初始化值
整型:0
浮点型:0.0
Char型:0或’\u0000’
布尔型:false
引用型:null
一维数组的内存解析
二维数组
二维数组
数组属于引用类型,数组的元素也可以是引用数组类型,一个一维数组的元素还是一个一维数组的,则此数组成为二维数组。
二维数组的声明与初始化
静态初始化:
Int[][] arr1=new int[][]{
{1,2,3},{3,4},{5,6}};
Int[] arr1[]=new int[][]{
{1,2,3},{3,4},{5,6}};
Int[] []arr1={
{1,2,3},{3,4},{5,6}};(类型推断)
动态初始化:
Int[][] arr2=new int[3][2];
Int[][] arr2=new int[3][ ];
调用二维数组元素
System.out.println(arr1[0][1]); //2
System.out.println(arr2[1][1]); //2
二维数组的属性
System.out.println(arr.length);
System.out.println(arr[0].length);
数组的遍历
for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++){
System.out.println(arr[i][j]+” “);
}
二维数组的默认初始化值
规定二维数组分为外层数组的元素,内层数组的元素
Int[][] arr= new int[3][4];
外层元素:arr[0],arr[1];
内层元素:arr[0][0],arr[1][2];
默认初始化值:
方式一:比如:int[][] arr= new int[3][4];
外层:地址值
内层:与一维数组的初始化情况相同
方式二:比如:int[][] arr= new int[3][];
外层:null
内层:不能调用,否则报错
数组的常见算法
数组的创建与元素赋值
杨辉三角、回形数、
针对数值型的数组
最大值、最小值、总和、平均值
数组的赋值
array2=array1;\将array1保存的数组的地址值赋值给了array2
数组的复制
Int[] array1,array2;
array1=new int[] {1,2,3,4};
array2=new int[array1.length];
for(int i=0;i<array2.length;i++){
array2[i]=array1[i];
}
通过new方式,给array2在堆空间开辟新的空间,将array1的数值一个一个赋值给array2
数组的反转
1)for(int i=0;i<array.length/2;i++){
String temp=arr[i];
Arr[i]=arr[arr.length-i-1];
Arr[arr.length-i-1]=temp;
}
2)for(int i=0,j=arr.length-1;i<j;