Java基础(5)

本文介绍了Java中的一维和二维数组。详细阐述了一维数组的定义、初始化方式,包括动态和静态初始化,并解析了可能出现的ArrayIndexOutOfBoundsException和NullPointerException异常。接着讲解了二维数组的定义格式及初始化示例,展示了多种声明方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组

一维数组
  • 定义的格式
    • 数据类型[] 数组名 = new 数据类型[数组的长度];
  • 初始化的方式
    • 动态初始化 只指定长度,由系统给出初始化值
      • int[] arr = new int[5];
    • b:静态初始化 给出初始化值,由系统决定长度
      • int[] arr = {1,2,3,4,5};或者是int[] arr = new int[]{1,2,3,4,5};
  • 常见的问题
    • ArrayIndexOutOfBoundsException:数组索引越界异常
      • 原因:你访问了不存在的索引。
    • NullPointerException:空指针异常
      • 原因:数组已经不在指向堆内存了。而你还用数组名去访问元素。
      • 示例:
            int[] arr = {1,2,3};
            arr = null;
            System.out.println(arr[0]);//空指针异常
示例
//遍历数组
public static void print(int[] arr) {
    for (int i = 0;i < arr.length ;i++ ) {
        System.out.print(arr[i] + " ");
    }
}
//查询
public static int getMax(int[] arr) {
    int max = arr[0];
    for (int i = 1;i < arr.length ;i++ ) {//从数组的第二个元素开始遍历
        if (max < arr[i]) {         //如果max记录的值小于的数组中的元素
            max = arr[i];           //max记录住较大的
        }
    }
    return max;
}
//数组反转
public static void reverseArray(int[] arr) {
    for (int i= 0;i < arr.length / 2 ; i++) {
        int temp = arr[i];
        arr[i] = arr[arr.length-1-i];
        arr[arr.length-1-i] = temp;
    }
}
二维数组
  • 定义的格式
    • int[][] arr = new int[3][2];
    • int[] arr[] = new int[3][2];
    • int arr[][] = new int[3][2];
  • 初始化
    • int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
示例
//遍历
int[][] arr = {{1,2,3},{4,5},{6,7,8,9}};
for (int i = 0;i < arr.length ;i++ ) {  //获取到每个二维数组中的一维数组
    for (int j = 0;j < arr[i].length ;j++ ) {//获取每个一维数组中的元素
        System.out.print(arr[i][j] + " ");
    }
    System.out.println();
}
//求和
int[][] arr ={{22,66,44},{77,33,88},{25,45,65},{11,66,99}};
int sum = 0;                        //定义变量,记录每次相加的结果
for (int i = 0;i < arr.length ;i++ ) {      //获取每一个一维数组
    for (int j = 0;j < arr[i].length ;j++ ) {//获取每一个一维数组中的元素
        sum = sum + arr[i][j];      //累加
    }
}
System.out.println(sum);
//值传递的区别
public static void main(String[] args) {
    int a = 10;
    int b = 20;
    System.out.println("a:"+a+",b:"+b);
    change(a,b);
    System.out.println("a:"+a+",b:"+b);

    int[] arr = {1,2,3,4,5};
    change(arr);
    System.out.println(arr[1]);
}

public static void change(int a,int b) {
    System.out.println("a:"+a+",b:"+b);
    a = b;
    b = a + b;
    System.out.println("a:"+a+",b:"+b);
}

public static void change(int[] arr) {
    for(int x=0; x<arr.length; x++) {
        if(arr[x]%2==0) {
            arr[x]*=2;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值