Java数组

2023-03-27  本文已影响0人  笔头还没烂

一、定义:数组是相同类型的数据按顺序组成的一种引用数据类型

二、数据类型包括:

  1. 基本数据类型

  2. 引用数据类型

    • 接口
    • 数组

三、学习内容

  1. 一维数组

    (1)声明

    • 语法格式:

      • 数据类型[] 数组名; eg: int[] myIntArray;

      • 数据类型 数组名[]; eg: int myIntArray[];

      • 例子

        • char[] ch;
        • String[] strArray;
    • 对比变量声明的语法格式:

      • 数据类型 变量名;

    (2)创建

    • 语法格式一:先声明后创建

      • 数据类型[] 数组名;

        数组名 = new 数据类型[数组长度];

      • eg: int[] arr;

        arr = new int[10];//创建一个长度为10的整型数组。

    • 语法格式二:声明的同时创建数组

      • 数据类型[] 数组名 = new 数据类型[数组长度];
      • eg: int[] arr = new int[10];
    • 注意:数组长度必须指定。

    • 数组在内存中的存储
      • 数组会被分配连续的内存空间

    (3)初始化

    • 定义:声明数组的同时给数组赋值,叫做数组的初始化。eg: int[] arr = {1,2,3,4,5,6,7,8,9,10};

    (4)元素的引用

    • 语法格式:数组名[下标];
      • 注意:下标从0开始。
      • eg: int[] arr = {1,2,3,4,5,6,7,8,9,10}; 该数组中数组元素1对应 arr[0], 2对应 arr[1],以此类推。

    (5)长度

    • 定义:初始化时所给数组元素的个数。如 int[] arr = {1,2,3,4,5,6,7,8,9,10}; 该数组的长度是10 .
    • 属性 length 表示数组的长度,如 arr.length

    (6)数组的应用

    public class ArrayDemo {
        public static void main(String[] args) {
            //声明一个整型数组
            int[] intArray;
            //声明一个字符串类型的数组
            String strArray[];
            //创建数组
            intArray = new int[5];
            strArray = new String[10];
            //声明数组的同时进行创建
            float[] floatArray = new float[4];
            //初始化数组
            char[] ch = {'a','b','c','d'};
            System.out.println("ch数组的长度为:"+ch.length);
            System.out.println("intArray数组的第2个元素为:"+intArray[1]);
            System.out.println("strArray数组的第5个元素为:"+strArray[4]);
            System.out.println("floatArray数组的最后一个元素为:"+floatArray[floatArray.length-1]);
            //循环为整型数组赋值
            for (int i = 0; i < 5; i++) {
                intArray[i] = i+1;
            }
            System.out.println("整型数组 intArray 的元素为:");
            //循环输出整型数组中的元素
            for (int i = 0; i < 5; i++) {
                System.out.print(intArray[i] + "  ");
            }
        }
    }
    

    运行结果如下:

    ch数组的长度为:4

    intArray数组的第2个元素为:0

    strArray数组的第5个元素为:null

    floatArray数组的最后一个元素为:0.0

    整型数组 intArray 的元素为: 1 2 3 4 5

    Ps:

    • 对象数组创建后元素默认值是 null;
    • 整型数组创建后的元素默认值是0;
    • 浮点型数组创建后的元素默认值是0.0 。

    例1: 求整型数组的累加和

    import java.util.Scanner;
    
    public class ArrayDemo1 {
        public static void main(String[] args) {
            //求整型数组的累加和
            //定义整型数组
            int[] a = new int[5];
            Scanner scanner = new Scanner(System.in);
            //从键盘接收数据,为数组元素赋值
            for (int i = 0; i < a.length; i++) {
                System.out.println("请输入第"+(i+1)+"个元素:");
                a[i] = scanner.nextInt();
            }
            System.out.println("数组元素的内容为:");
            for (int i = 0; i < a.length; i++) {
                System.out.print(a[i]+"  ");
            }
            //求数组元素的累加和
            int sum = 0 ;
            for (int i = 0; i < a.length; i++) {
                sum = sum + a[i];
            }
            System.out.println();
            System.out.println("数组元素的累加和为:"+sum);
        }
    }
    

    运行结果如下:

    请输入第1个元素: 1

    请输入第2个元素: 2

    请输入第3个元素: 3

    请输入第4个元素: 4

    请输入第5个元素: 5

    数组元素的内容为: 1 2 3 4 5

    数组元素的累加和为:15

    例2: 求数组元素的最大值

    public class ArrayDemo2 {
        public static void main(String[] args) {
            //求数组元素的最大值
            int[] a = {34,23,78,99,31};
            int max = a[0];
            for (int i = 1; i < a.length; i++) {
                if (a[i] > max) {
                    max = a[i];
                }
            }
            System.out.println("数组的最大值是"+max);
        }
    }
    

    运行结果如下:

    数组的最大值是99


    增强型for循环

    • 又叫 foreach 循环
    • 应用:
    int[] a = {34,23,78,99,31};
    for (int i: a) {
       System.out.println(i);
    }
    

    运行结果为:

    34

    23

    78

    99

    31


    案例:

    • 如何对变量a,b 的值进行交换
    int a = 3,b = 5;
    int temp;
    temp = a;
    a = b;
    b = temp;
    
    • 冒泡排序
      • 对一组整数按照由小到大的顺序进行排序。
      • 一组整数,如:{34,53,12,32,56,17}
    public class ArraySortDemo {
            public static void main(String[] args) {
                int[] arr = {34,53,12,32,56,17};
              
                //外层循环控制排序的次数
                for (int i = 0; i < arr.length - 1; i++) {
                    //内层循环找到每趟排序的最大值
                    for(int j = 0;j< arr.length - i - 1;j++) {
                        if (arr[j] > arr[j+1]) {
                            int temp = arr[j];
                            arr[j] = arr[j+1];
                            arr[j+1] = temp;
                        }
                    }
                }
                for (int n: arr) {
                    System.out.print(n + "   ");
                }
            }
        }
    

    运行结果如下:

    12 17 32 34 53 56

    小结

    • 数组是引用数据类型;
    • 创建数组时,会开辟连续的内存空间;
    • 数组长度使用 length 属性获取;
    • 数组元素的下标从0开始。
    • 注意数组下标越界问题(错误信息如下:Exception in thread "方法名" java.lang.ArrayIndexOutOfBoundsException: 越界值 at 包名.类名.方法名(文件名:行号),此处 文件名: 行号 可点击,点击后可直接跳转到代码异常的地方)
上一篇下一篇

猜你喜欢

热点阅读