数组
数组的定义
- 是相同类型数据的有序集合
- 每个元素可以通过下标访问数组元素
数组的声明创建
dataType[] arrayRefVar;
int[] a;//声明的例子
dataType[] arrayRefVar = new dataType[arraySize];
int[] b = new int[10];//创建一个可以存储10个,类型为整形的数组。
元素通过索引访问,索引从零开始。
获取数组的长度——arrays.length
数组的内存分析
堆:
- 存放new的对象和数组
- 可以被所有的线程共享,不会存放别的对象引用
栈:
- 存放基本变量类型(会包含具体数值)
- 引用对象的变量(会存放具体地址)
方法区:
- 可以被所有线程共享
- 包含所有class和static变量
初始化
静态:创建+赋值
int[] a = {1,2,3,4,5,6};
动态:包含默认初始化(隐式初始化:数字---0;字符:null)
int[] b = new int[10];
b[0] = 10;
基本特点
- 长度是确定的。创建后大小不可改变
- 元素必须是相同类型。
- 数组的类型可以是任意的。
- 数组的变量属于引用类型。
- 数组对象本身是在 堆 中的
数组边界
合法边界:[0——array.length-1]
数组下标越界错误:ArrayIndexOutOfBoundsException
数组使用
public static void main(String[] args) {
int[] a = {1,2,3,4,5};
//打印数组元素
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
System.out.println("=====");
//计算所有元素的和
int sum = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
}
System.out.println("sum="+sum);
System.out.println("=====");
//查找最大元素
int max = a[0];
for (int i = 1; i < a.length; i++) {
if (max<a[i])
max = a[i];
}
System.out.println("max="+max);
}
多维数组
二维数组的定义
int[][] a = new int[2][2];//定义了一个二行二列的数组
Arrays类
数组的工具类!!
toString——输出数组的数据
fill——给数组赋值
sort——数组排序(升序)
equals——比较数组中元素的值
brinarySearch——二分查找
public static void main(String[] args) {
int[] a = {1,2,3,5,75,32,31,76,9,4};
System.out.println(Arrays.toString(a));//输出数组元素
System.out.println("----------");
System.out.println(Arrays.binarySearch(a, 9));//查找9的下标位置并输出
System.out.println("----------");
Arrays.sort(a);//对数组进行升序排序
System.out.println(Arrays.toString(a));//输出排序后的数组
System.out.println("----------");
Arrays.fill(a,1);//对数组进行填充,填充数字为1
System.out.println(Arrays.toString(a));//输出数组验证
System.out.println("----------");
}