JavaEE 学习笔记 第三章 数组 6

第三章 数组

点击进入 Eclipse的下载与安装

点击进入 Eclipse的基本使用教程

点击进入 Eclipse 常用快捷键



3.1 数组的概述

3.1.1 数组的理解

        数组(Array),是多个相同类型数据一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。


3.1.2 数组的相关概念

        数组名,下标(或索引),元素,数组的长度。


3.1.3 数组的特点

        数组的特点:数组是有序排列的。

        数组本身是引用数据类型,而数组中的元素可以说任何数据类型,包括基本数据类型和引用数据类型。

        创建数组对象会在内存中开辟一整块连续的空间,而数组名中引用的是这块连续空间的首地址。

        数组的长度一旦确定,就不能更改。我们可以直接通过下标(或索引)的方式调用指定位置的元素,速度很快。


3.1.4 数组的分类

                ①.按照维度:一维数组,二维数组,三维数组......

                ②.按照元素的数据类型分:基本数据类型元素的数组,引用数据类型元素的数组(即对象数组)    


3.2 一维数组的使用

3.2.1 一维数组的声明和初始化        静态初始化和动态初始化

public class DemoArray01 {
    public static void main(String[] args) {
        //动态初始化数组
        int[] array01 = new int[5];

        //标准格式
        // 静态初始化数组
        int[] array02 = new int[]{1,2,3,4,5};
        int[] array03 = {1,2,3,4,5}; //省略格式的静态初始化数组
    }
}

3.2.2 如何调用数组指定位置的元素        根据数组角标(索引)

public class ArrayTest {
    public static void main(String[] args) {
        int[] array01 = {1, 2, 3, 4, 5}; //省略格式的静态初始化数组
        //通过角标的方式调用,数组的角标(或索引)从0开始的,到数组的长度-1结束
        int i0 = array01[0];
        int i4 = array01[4];
        System.out.println(i0);
        System.out.println(i4);
    }
}

3.2.3 如何获取数组的长度        调用length方法

public class ArrayTest {
    public static void main(String[] args) {
        int[] array01 = {1, 2, 3, 4, 5}; //省略格式的静态初始化数组
        //length方法得到数组长度
        int length = array01.length;
        System.out.println(length);
    }
}

3.2.4 如何遍历数组        利用for循环机制

public class ArrayTest {
    public static void main(String[] args) {
        int[] array01 = {1, 2, 3, 4, 5}; //省略格式的静态初始化数组
        //利用for循环根据数组下标循环读取数组元素
        for (int i = 0; i < array01.length; i++) {
            System.out.println(array01[i]);
        }
    }
}

3.2.5 数组元素的默认初始值


3.2.6 一维数组的使用

 


3.3 多维数组的使用    

3.3.1 多维数组的概述

        Java 语言里提供了支持多维数组的语法。

        如果说可以把一维数组当成几何中的线性图形,那么二维数组就相当于是一个Excel表格。

        对于二维数组的理解,我们可以看成是一堆一维数组arry01又作为另一个一维数组arry02的元素而存在。其实,从数组底层的运行机制来看,其实没有多维数组。


3.3.2 多维数组的操作

//以二维数组为例
public class ArrayTest {
    public static void main(String[] args) {
        //二维数组的初始化
        //静态初始化
        int[][] array01 = new int[][]{
   
   {1,2,3},{2,3,4},{7,8}};
        //动态初始化
        int[][] array02 = new int[2][3];

        //二维数组获取元素
        System.out.println(array01[0][1]);//2
        System.out.println(array01[1][1]);//3

        //二维数组获取长度
        System.out.println(array01.length);//3

        //二维数组遍历
        for (int i = 0; i < array01.length; i++) {
            for (int j = 0; j < array01[i].length; j++) {
                System.out.print(array01[i][j]+" ");
            }
            System.out.println();
        }
    }
}

3.3.3 多维数组的使用


public class ArrayTest {
    public static void main(String[] args) {
        int[] arr = new int[6];
        for (int i = 0; i < arr.length; i++) {
            while (true) {
                int random = (int) (Math.random() * 30 + 1);
                int count = 0;
                for (int j = 0; j < arr.length; j++) {
                    if (arr[j] == random) {
                        count++;
                    }
                }
                if (count == 0) {
                    arr[i] = random;
                    break;
                }
            }
        }
        for (int k : arr) {
            System.out.print(k + " ");
        }
    }
}



3.4 数组中涉及到的常见算法

3.4.1 数组元素的赋值(杨辉三角,回形数等)

//杨辉三角
public class ArrayTest {
    public static void main(String[] args) {

        int[][] arr = new int[10][];
        for (int i = 0; i < arr.length; i++) {
            arr[i] = new int[i + 1];
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                if (j == 0 || i == j) {
                    arr[i][j] = 1;
                } else {
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
                }
            }
        }
        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.print(arr[i][j] + "\t");
            }
            System.out.println();
        }
    }
}

3.4.2 求数值型数组中元素的最大值,最小值,平均数,总和等

public class ArrayTest {
    public static void main(String[] args) {
        //定义一个长度为10,int类型的一维数组
        int[] array01 = new int[10];

        //为其分配十个随机两位数的整数
        for (int i = 0; i < array01.length; i++) {
            int v = (int) (Math.random() * 90 + 10);
            array01[i] = v;
        }
        for (Object O:array01) {
            System.out.print(O+" ");
        }
        //求出数组内元素的最大值,最小值,和值,平均数,并输出
        int maxValue = array01[0];
        int minValue = array01[0];
        int HeValue = array01[0];
        for (int i = 1; i < array01.length; i++) {
            if (array01[i]>maxValue){
                maxValue = array01[i];
            }
            if (array01[i]<minValue){
                minValue = array01[i];
            }
            HeValue+=array01[i];
        }
        System.out.println("\n数组最大值为:"+maxValue
                +"\n数组最小值为:"+minValue
                +"\n数组和值为:"+HeValue
                +"\n数组平均数为:"+(HeValue/10));
    }
}


3.4.3 数组的复制,反转,查找(线性查找,二分查找)

public class ArrayTest {
    public static void main(String[] args) {
        //数组的复制
        int[] array01 = {1, 2, 3, 4, 5};
        int[] array02 = new int[array01.length];
        for (int i = 0; i < array01.length; i++) {
            array02[i] = array01[i];
        }
        System.out.print("复制后的数组:");
        for (int i = 0; i < array01.length; i++) {
            System.out.print(array02[i] + " ");
        }

        //数组的反转
        for (int i = 0; i < array01.length; i++) {
            array02[array01.length - i - 1] = array01[i];
        }
        System.out.print("\n反转后的数组:");
        for (int i = 0; i < array01.length; i++) {
            System.out.print(array02[i] + " ");
        }

        //数组的线性查找
        boolean a = true;
        for (int i = 0; i < array01.length; i++) {
            if (array01[i] == 7) {
                System.out.println("\n找到了指定元素,数组下标为:" + i);
                a = false;
                break;
            }
        }
        if (a) {
            System.out.println("\n没有找到指定元素");
        }

        //数组的二分查找
        int c = 1;
        int head = 0;
        int end = array01.length - 1;
        boolean b = true;
        while (head < end) {
            int middle = (head + end) / 2;
            if (array01[middle] == c) {
                System.out.println("\n找到了指定元素,数组下标为:" + middle);
                b = false;
                break;
            }else if (array01[middle] > c) {
                end = middle - 1;
            }else if (array01[middle] < c) {
                head = middle + 1;
            }

        }
        if (b) {
            System.out.println("\n没有找到指定元素");
        }
    }
}


点击进入:下一节 :JavaEE 学习笔记 第三章 数组 7

猜你喜欢

转载自blog.csdn.net/woailuo8214/article/details/121221491