Javat语言基础----数组

Java语言基础----数组

数组是存储同一种数据类型多个元素的集合。也可以看成是一个容器。 数组既可以存储基本数据类型,也可以存储引用数据类型

一维数组的初始化

Java中的数组必须先初始化,然后才能使用。
所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

  1. 始化的分类:
    a:动态初始化: 只指定长度,由系统给出初始化值
    b:静态初始化: 给出初始化值,由系统决定长度
    注意事项: 这两种方式,只能使用一种,不能进行动静结合
  2. 动态初始化的格式:
    数据类型[] 数组名 = new 数据类型[数组长度];
    数组长度其实就是数组中元素的个数。
    举例: int[] arr = new int[3]; 定义了一个int类型的数组arr,这个数组可以存放3个int类型的值。
  3. 静态初始化格式:
    数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…} (也可以简单格式 int[] arr = new int[]{1,2,3} )

二维数组的概述和格式

  1. 二维数组与一维数组的关系:
    二维数组实质上就是每一个元素为一维数组的数组

  2. 二维数组的格式:
    数据类型[][] 变量名 = new 数据类型[m] [n];
    m表示这个二维数组有多少个一维数组 必须写上
    n表示每一个一维数组的元素个数 可选
    举例:
    int[][] arr = new int[3] [2];
    定义了一个二维数组arr
    这个二维数组有3个一维数组,名称是arr[0],arr[1],arr[ 2 ]
    每个一维数组有2个元素,可以通过arr[m][n]来获取
    表示获取第m+1个一维数组的第n+1个元素

  3. C:注意事项
    A:以下格式也可以表示二维数组
    a:数据类型 数组名[][] = new 数据类型[m][n];
    b:数据类型[] 数组名[] = new 数据类型[m][n];
    这两种格式不推荐使用
    B:注意下面定义的区别
    int x,y;
    int[] x,y[];

    区别是:
    int[] x,y[];//定义了两个数组 一个是一维数组x 一个是二维数组y
    x=new int[3];
    y=new int[3][];

关于数组的一些异常

  1. ArrayIndexOutOfBoundsException 数组角标越界异常
    例如:int[] arr = new int[]{10, 20, 30};
    arr[3]=100;
  2. NullPointerException 空指针异常
    int[] arr = new int[]{10, 20};
    arr = null;// 人为置空
    int length=arr.length;
    System.out.println(length);

数组的遍历

public class ArrayDemo {
public static void main(String[] args) {
    int[] arr={10,20,50,40,102};
           for (int i = 0; i < arr.length; i++) {
        System.out.println(arr[i]);
    }
    System.out.println("---------------------------");
    //反向遍历
    for(int i=arr.length-1;i>=0;i--){
        System.out.println(arr[i]);
    }

}

}

利用方法返回数组中的最大值

public class ArrayDemo2 {
public static void main(String[] args) {
    //获取数组中的最大值或最小值
    int[] arr = {10, 20, 50, 40, 102};
    int max = getMax(arr);
    System.out.println("最大值是" + max);

    int[] arr2 = {10, 20, 50, 40, 102,1000,1};
    int max1 = getMax(arr2);
    System.out.println("最大值是" + max1);
}

public static int getMax(int[] arr){

    //定义一个参照值
    int max = arr[0];
    for (int i = 1; i < arr.length; i++) {
        if (arr[i] > max) {
            max = arr[i];
        }
    }
    return max;
}

}
~

将一维数组中的元素对调

public class ArrayDemo3 {
public static void main(String[] args) {
    //A:
    //案例演示:
    //数组元素反转(就是把元素对调)
    int[] arr = {10, 20, 30, 40, 50}; //50 40 30 20 10
   reverseArray(arr);
    showArray(arr);


}

//数组元素反转
private static void reverseArray(int[] arr) {
    //分析:首尾元素值交换,遍历一半
    for (int i = 0; i < arr.length / 2; i++) {
        //采用中间变量进行值交换
        int t = arr[i];
        arr[i] = arr[arr.length - 1 - i];
        arr[arr.length - 1 - i] = t;

    }
}

private static void showArray(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        System.out.print(arr[i] + ",");
    }
}

}

根据数组索引输出数组元素

public class ArrayDemo8 {
public static void main(String[] args) {
    //A:
    //案例演示:
    //数组查表法(根据键盘录入索引, 查找对应星期)
    //根据索引查元素
    //获取跟打印输出是两个概念
    String[] arr = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"};
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入一个整数 1----7");
    int index = scanner.nextInt();
    String str = getElementByArray(index, arr);
    System.out.println(str);
}

private static String getElementByArray(int index, String[] arr) {
    if (index >= 1 && index <= 7) {
        return arr[index - 1];
    } else {
        return "查无此元素";
    }
}

}

根据数组元素输出元素索引

public class ArrayDemo9 {
public static void main(String[] args) {
    String[] arr = {"星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"};
    Scanner scanner = new Scanner(System.in);
    System.out.println("请输入一个星期");
    String str = scanner.nextLine();//获取用户输入的字符串
    int index = getIndex(str, arr);

    System.out.println("该元素的索引是" + index);
    
}

private static int getIndex(String str, String[] arr) {
    //遍历数组

    for (int i = 0; i < arr.length; i++) {
        if (str.equals(arr[i])) {
            return i;
        }

    }
    return -1; // 一般喜欢用 -1 代表没找到
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值