一、概念
同一种类型数据的集合,简单来说就是一个容器用来装同一种类型的东西。
数组的好处:可以自动给数组中的元素进行编号,便于操作这些元素。
二、一维数组
定义格式:1、元素类型 [ ]数组名 = new 元素类型 [元素的个数或者数组的长度];
如: int [ ] arr = new int [8];
2、元素类型 [ ] 数组名 = new 元素类型 [ ] {元素1,元素2,.....};
如: int [ ] arr = new int [ ] {1,3,4,...};
3、静态初始化格式: 元素类型 [ ] 数组名 = {元素1,元素2,元素3,....};
数组是引用的数据类型,在内存中分配如图
如果直接输出arr得到的结果是一个地址值,也就是图上的0x0056
数组在堆内存中开辟空间以后,会有默认的初始值,int的默认值为0,boolean的默认值为false.
内存分配:java程序运行时,需要在内存中分配空间,为了提高运算效率,对空间进行了不同区域的划分,每一片区域都有特定的数据处理方式和内存管理方式。
栈内存:用于存储局部变量,当数据使用完时,所占空间会被自动释放。
堆内存:1、用于存储数组和对象,通过new建立的实例都存在堆内存中。
2、每个实体都有内存地址值。
3、实体中的变量都有默认初始化值。
4、实体不在被使用时,会在不确定的时间内被垃圾回收器回收。
三、二维数组
定义格式:1、数组类型 [ ] [ ] 数组名 = new 数组类型 [一维数组个数 ] [每个一维数组元素个数 ];
如: int [] [] arr = new int [3] [2]; 意思是定义了一个二维数组arr ,二维数组中包含3个一维数组,每个一维数组中有两个元素。一维数组的名称分别为arr[0],arr[1],arr[2].给第一个一维数组一角标赋值的写法为:int [0][1] = 7;
2、int [] [] = new int [3] [];此格式中每个一维数组的默认值都是null.
3、int [] [] = new int {{1,2,3},{4,5,3},{6,7,5}};对每个一维数组的每个元素都进行了初始化。
4、特殊定义方式(基本不用)int[]x,y[];x为一维数组,y为二维数组。
二维数组在内存的分配情况:
四、程序演示
对给定数组进行排序,选择排序和冒泡排序两种
运行结果:
折半查找程序:
运行结果:
进制转换:
运行结果: