一、java数组的特点
1、一个数组中只能存储一种数据类型的数据。
2、数组初始化完成后,占用空间固定,长度不变(清空数组数据,所占的空间依然被保留)
二、数组的定义
两种方法定义数组:
type[] arrayName; /* 推荐 */
type arrayName[]注意:定义数组时不能指定数组的长度。
三、数组的初始化
两种初始化方法:
1、静态初始化:显式指定数组元素初始值,由系统决定长度。
2、动态初始化:只指定数组长度,系统分配初始值。
3.1静态初始化
/* 格式语法 */
arrayName = new type[]{e1, e2, e3, ...}
/* 定义int类型数组intArr */
int[] intArr;
/* 静态初始化,指定元素初始值,不指定长度 */
intArr = new int[]{1, 2, 3, 4};
/* 定义Object数组类型变量objArr */
Object[] objArr;
/* 数组元素是定义数组时数组元素类型的子类 */
objArr = new String[] {"aaa", "bbb"};
/* 静态初始化 */
Object[] objArr2;
objArr2 = new Object[] {"aaa", "bbb"};
/* 简化初始化,只用花括号 */
intArr = {1, 2, 3, 4};3.2动态初始化
/* 语法 */
arrayName = new type[length];
/* 示例 */
int[] prices = new int[5];
Object[] books = new String[4];系统分配的初始值:
- 整数类型(byte, short, int, long): 0
- 浮点类型(float, double): 0.0
- 字符(char): ‘/u0000’
- 布尔(boolean): false
- 引用类型(类、接口、数组): null
四、数组的使用
int[] arr = {1, 2, 3, 4, 5};
/* 通过索引访问 */
System.out.println(a[1]) // 输出2
/* 获取数组长度 */
arr.length // 5
/* 数组遍历 */
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
/*
foreach遍历
语法格式:
for (type variableName: array | collection) {
//variableName 自动迭代访问每个元素
}*/
for(int item: arr) {
System.out.println(item); // 1 2 3 4 5
}
五、数组的工具类
import java.util.Arrays
/* 二分法查找key元素在a数组中的索引。如果不包含key,返回负数。要求a已经按升序排序 */
int binarySearch(type[] a, type key)
/* 在fromIndex到toIndex中,搜索key,条件同上 */
int binarySearch(type[] a, int fromIndex, int toIndex, type key)
/* 复制数组, newLength长度小于原长度,则truncate */
type copyOf(type[] original, int newLength)
/* 复制from到to的数组 */
type copyOfRange(type[] original, int from, int to)
/*a和a2的长度相等,且数组元素一一相等,返回true*/
boolean equals(type[] a, type[] a2)
/* 将a数组所有元素赋值为val */
void fill(type[] a, type val);
void fill(type[] a, int fromIndex, int toIndex)
/* 排序 */
void sort(type[] a)
void sort(type[] a, int fromIndex, int toIndex)
/* 将数组转换成字符串,逗号分隔 */
String toString(type[] a)
转载于:https://my.oschina.net/holton/blog/823493