数组

数组

一、数组的定义

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、long0
float、double0.0
char一个空字符
booleanfalse
引用类型数据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);
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值