java 【数组
数组概述
概念: 相同类型的若干个数据,按一定先后顺序排列组合而成。
每个数据可以看成是数组中的元素,可以用下标来访问
数组的声明和创建
-
声明
dataType [] arrayRefVar;//推荐使用 dataType arrayRefVar [];//不推荐 //for example int [] num1; int num2 []; //不推荐
-
创建
dataType [] arrayRefVar = new dataType[arraySize] // for example int [] num= new int[10] // 创建一个长度为10 整型的数组
-
数组的元素是通过索引访问的,数组索引从0开始
-
获取数组长度 arrays.length 其中arrays 为数组名。
内存分析
Java内存 : 堆,栈,方法区
堆: 存放 new 的对象和数组。可以被所有的线程共享,不会存放别的对象引用
栈: 存放基本变量(包含值); 引用对象的变量名(存放这个引用在堆里面的具体地址)
方法区: 可以被所有的线程共享 (static,类) 也属于堆!!
三种初始化
- 静态初始化
- 动态初始化
- 数组的默认初始化
四个基本特点
其长度是确定的,数组一旦被创建,大小是不可以改变的
元素必须是相同类型,不允许出现混合类型
数组中的元素可以是任何类型,包括基本类型和引用类型
数组变量属引用类型,数组也可以看成是对象,数组中每个元素相当于该对象的成员变量;数组对象本身是在堆中。
数组边界
下边合法区间[0,length-1]
不能越界!会报错:ArrayIndexOutOfBoundsException
数组使用
普通for 循环
for-each (arrays.for)
public static void main(String[] args) {
int [][] array1 = new int[11][11];
array1[1][2]=1;
array1[2][3]= 1;
System.out.println("输出原始数组");
// array1.for
for (int[] ints : array1) {
//ints.for
for (int anInt : ints) {
System.out.print(anInt +"\t");
}
System.out.println();
}
数组作方法入参
数组作返回值
数组类 Arrays
java.utils.Arrays
这个类中有许多关于数组的方法,例如输出数组或者对数组排序。
冒泡排序
两层循环,外层表示轮数,里层依次比较。
时间复杂度O(n^2)
稀疏数组
当一个数组中大部分元素为0 ,或同一值时,可以使用稀疏数组来保存该数组
处理方式:
记录数组一共几行几列,有多少个不同值。
把具有不同值的元素和行列及值记录在一个小规模数组中,从而缩小程序规模。