数组
1、数组的概述
概念:数组是相同数据类型数据的有序集合(每一个数据时一个数组元素,可以通过下标来进行访问)
数组的基本特点
1.长度是确定的,数组一旦被创建,数组的长度就不会改变
2.数组元素必须是相同的类型,不存在混合类型
3.数组的类型可以任何类型,可以使基本数据类型也可以是引用数据类型
4.数据变量属引用数据类型,数组也可以看成对象,数组中的每个元素可以看成该对象的成员变量
5.数组本身就是对象,java中的对象在堆中,所以数组对象本身是在堆中
2、数组的声明、初始化、创建
数组必须先声明才能使用
声明的语法
数组类型[] 数组名; //首选方法
数组类型 数组名[]; //效果相同,但是不是首选方法
数组的初始化
1.静态初始化
int[] a = {1,2,3,4}; int[] b = new int[]{0,6,4,3,3};
2.动态初始化
int[] c = new int[5];
3、数组的使用
数组元素的访问索引是从0开始的
数组的长度是: 数组名.length
1、数组当做方法的入参
public class shuzu1 { public static void main(String[] args) { int[] a = {1,2,3,4}; f(a); } public static void f(int[] a){ for (int i = 0; i < a.length; i++) { System.out.println(a[i]); } } }
2、数组可以作为返回值
//反转函数 public static int[] reserse(int[] a) { int[] result = new int[a.length]; //反转操作 for (int i = 0,j=result.length-1; i <a.length; i++,j--) { result[j] = a[i]; } return result; }
4、多维数组
1.二维数组
1、理解:二维数组可以看成一数组的数组,二维数组就是一个特殊的一维数组,每一个元素都是一个一维数组
2、样式:int a[][] = new int[3][4]; (二维数组a可以看成一个三行四列的数组)
3、声明、初始化和创建
1 /* 第一种方式 */ 2 int tdarr1[][] = { { 1, 3, 5 }, { 5, 9, 10 } }; 3 /* 第二种方式 */ 4 int tdarr2[][] = new int[][] { { 65, 55, 12 }, { 92, 7, 22 } }; 5 /* 第三种方式 */ 6 int tdarr3[][] = new int[2][3]; // 先给数组分配内存空间 7 tdarr3[0] = new int[] { 6, 54, 71 }; // 给第一行分配一个一维数组 8 tdarr3[1][0] = 63; // 给第二行第一列赋值为63 9 tdarr3[1][1] = 10; // 给第二行第二列赋值为10 10 tdarr3[1][2] = 7; // 给第二行第三列赋值为7
5、Arrays类
1、Arrays数数组的工具类,java.util.Arrays,里面提供的操作数组的方法都是static修饰的静态方法可以直接使用;
2、常用的方法
给数组赋值:fill()方法;
数组排序:sort();
比较数组:equals();
查找数组元素:binarySearch()能对排序好的数组进行二分法查找
打印数组元素:toString()
6、稀疏数组
1、 是一种数据结构,对算法可以进行压缩
2、当一个数组中,大部分元素是0,或者是为同一个值的时候,可以用稀疏数组来保存该数组
3、稀疏数组的处理方式
1、记录数组有几行几列,有多少个不同的值;
2、把具有不同值的元素和行列以及值记录在一个小规模的数组中,从而缩小数组的规模;