一、数组定义
1.1 概述
数组定义:
- 数组是相同类型数据的有序组合
- 数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成
- 其中,每一个数据称为一个数组元素,每个数组元素可以通过一个下标来访问
数组特点:
- 数组元素类型相同:不允许出现混合类型
- 数组元素类型既可以是基本类型,也可以是引用类型
- 数组属于引用数据类型的变量,可以被看成对象【数组变量/对象在堆中】,那么数组中的每个元素相当于该对象的成员变量
- 创建数组对象会在内存中【栈】中开辟一整块连续的空间
-
- 长度确定:一旦被创建,大小就是不可以改变的
1.2 声明与创建
1.数组声明
数组类型[] 数组名称;//第一种,首选
数组类型 数组名称[];//第二种
2.数组创建
数组名称 = new 数组类型[数组大小];
也可以合起来
数组类型[] 数组名称 = new 数组类型[数组大小];
Java内存【JVM-主要结构:
- 堆heap:存放new出来的结构——对象和数组;可以被所有的线程共享,不会存放别的对象引用
- 栈stack:局部变量【存放基本变量类型(会包含这个基本类型的具体数值);引用对象的变量(会存放这个引用在堆里面的具体地址)】
- 方法区:可以被所有的线程共享;包含了所有的class和static变量
数组初始化:
- 静态初始化
- 动态初始化
- 默认初始化
- 数组元素是整型(int、short、…):0
- 数组元素是浮点型:0.0
- 数组元素是char型: 0或 ‘\u0000’,而非’0’【本质还是数字】
- 数组元素是boolean型:false
- 数组元素是引用数据类型:null,而非"null"
//整型型数组的默认初始化
int[] arr = new int[4];
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
//char型数组的默认初始化
char[] arr = new char[4];
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
if(arr[0] == 0){
System.out.println("真的是0");
}
1.3 使用
- For-each循环遍历
- 作为函数参数
- 作为函数返回值
二、多维数组
多维数组可以看成数组的数组
int[][] array = {{1,2},{3,4},{5,6}};
printArray(array[0]);//1,2
System.out.println(array[0][0]);//1
三、Arrays 类
java.util.Arrays
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而不用(不是不能)使用对象来调用
常用方法:
- 数组赋值:fill方法
- 数组排序:sort方法,按升序
- 比较数组:equals方法
- 查找数组元素:binarySearch二分查找
四、稀疏数组
稀疏数组: 当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组
处理方式: 记录数组一共几行几列,有多少个不同的值【第一行】;把具有不同值的元素的行列及值记录在一个小规模的数组中——缩小程序的规模
一些坑
int[] arr1 = new int[]{1,2,3};
System.out.println(arr1);//地址
int[] arr2 = new char[]{'a','b','c'};
System.out.println(arr2);//abc
// 去看println源码