数组
一、数组的定义
1.1数组格式:
1、数组类型[] 数组变量名 = new 数组类型[长度]
2、数组类型[] 数组变量名 = new 数组类型[]{数据1,数据2,数据3…}
3、数组类型[] 数组变量名 = {数据1,数据2,数据3…}
int[] age = new int [3];
int[] age2 = new int[]{18,20,30};
int[] age3 = {18,20,30};
1.2数据访问:
格式:数组变量名[下标]
1.3赋值:
age[0] = 18;
1.4 length属性
//获取数组的长度:数组变量名.length
System.out.println("数组长度为:"+age.length);
1.5元素默认值
数据类型 | 默认初始化值 |
---|---|
byte、short、int、long | 0 |
float、double | 0.0 |
char | 一个空字符 |
boolean | false |
引用类型数据 | null |
二、数组遍历
在操作数组时,经常需要依次访问数组中的每个元素,这种操作称作数组的遍历。使用for循环来遍历数组:
for (int i = 0; i <age.length ; i++)
System.out.println("age["+i+"]="+age[i]);
三、数组常见问题
3.1数组异常
3.1.1数组越界异常
数组是不可变的,如果获取超出数组界限的值: ArrayIndexOutOfBoundsException 数组越界异常
3.1.2空指针异常
将null值赋给数组,NullPointerException 空指针异常
3.2数组最值
3.2.1 获取数组最大值
public static int getArrayMax(int[] array){
int max = array[0];
for (int i = 1; i <array.length ; i++) {
if (max<array[i]){
max = array[i];//如果array[i]的值大于max,便把array[i]的值赋值给max
}
}
return max;
}
3.2.2获取数组最小值
public static int getArrayMin(int[] array){
int min = array[0];
for (int i = 1; i>array.length ; i++) {
if (min>array[i]){
min = array[i];//如果array[i]的值大于max,便把array[i]的值赋值给max
}
}
return min;
}
3.3打印数组原型
public static String printArray(int[] array){
String str = "[";//字符串开头
for (int i = 0; i <array.length ; i++) {
if (i==array.length-1){
str+=array[i]+"]";
}else {
str+=array[i]+",";
}
}
return str;
}
3.4扩容数组
public static int[] addArray(int[] arr,int index,int num){
//1. 创建一个新的数组,比原来的数组多一位
int[] temp = new int[arr.length+1];
//2. 把 index 之前的部分原封不动的搬过去
for (int i = 0; i <index ; i++) {
temp[i] = arr[i];
}
//3. 新的数组[index] = num
temp[index] = num;
// 4. 旧的数组从index开始循环把后续的数据搬过去
for (int i = index; i <arr.length ; i++) {
temp[i+1] = arr[i];
}
return temp;
}
四、数组工具类
public class ArrayUtil {
public static void main(String[] args) {
int[] arr = {3,7,6,9,2,1,8};
//sort 排序,从小到大
Arrays.sort(arr);
//toString 将数据中的数据返回字符串
System.out.println(Arrays.toString(arr));
//fill 替换
Arrays.fill(arr,2,4,100);//[2,4)左闭右开
System.out.println(Arrays.toString(arr));
//拷贝数组指定拷贝的索引从0开始到newLength结束
int[] result = Arrays.copyOf(arr,5);
System.out.println(Arrays.toString(result));
result = Arrays.copyOfRange(arr,2,5);
System.out.println(Arrays.toString(result));
}
}
五、二维数组
1、定义
//格式1:
int[][] arrs = new int[3][4];
//格式2:
int[][] arrs = {{1, 2}, {5, 6, 7}, {9, 0, 1, 2}};
2、数据访问
格式:数组变量名[索引][索引;
3、赋值
arrs[1][2] = 555;
4、遍历
public class TwoDArrays {
public static void main(String[] args) {
int [][] arrs = {{1,2},{4,5,6},{9,0,3,7} };
arrs[1][2] = 555;
System.out.println(arrs[1][2]);
for (int i = 0; i <arrs.length ; i++) {
for (int j = 0; j <arrs[i].length ; j++) {
System.out.println("arrs["+i+"]["+j+"]="+arrs[i][j]);
}
System.out.println("二维数组中第"+(i+1)+"的数组长度为"+arrs[i].length);
}
System.out.println("二维数组外层数组的长度为"+arrs.length);
}
}
5、累加
二维数组累加
int[][] arr2 = {{1, 2}, {3, 4, 5}, {6, 7, 8, 9, 10}};
// 两个临时变量
int singleTotal = 0;
int allTotal = 0;
// 循环遍历数组累加
for (int i = 0; i < arr2.length; i++) {
for (int j = 0; j < arr2[i].length; j++) {
singleTotal += arr2[i][j];
}
System.out.println("二维数组的第 " + (i + 1) + " 个数组的累加为:" + singleTotal);
allTotal += singleTotal;
singleTotal = 0;// 重置为 0 方便计算下一个数组
}
System.out.println("二维数组累加总和为:" + allTotal);