数组概述和数组常见操作问题

目录

前言

一、数组的概念

二、数组初始化

三、数组的访问

四、数组操作的两个常见问题

五、数组常见操作

 六、数组排序


前言

数组在java编程语言中算是最重要的数据结构之一,作为java初学者,最先接触的也是数组,这足以看出学好数组的重要性,经过了一周多学习关卡二有关数组的内容,本人对数组有了初步的认识,在这里写出了有关数组的浅薄理解。


一、数组的概念

数组(Array)是有序数据的集合,数组中的每个元素具有相同的数据类型,可以用一个统一的数组名和不同的下标来唯一确定数组中的元素。根据数组的维度,可以将其分为一维数组、二维数组和多维数组等。

二、数组初始化

概述:Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。                                                                                                  数组的两种常见初始化方式:1.动态初始化(指定长度) 2.静态初始化(指定内容)

1.动态初始化:初始化时只指定数组长度,由系统为数组分配初始值  格式: 数据类型[] 变量名= new 数据类型[数组长度]; eg:int[] arr = new int[3];   

2.静态初始化:初始化指定每个数组元素的初始值,由系统决定数组长度   格式: 数据类型[] 变量名 = new 数据类型[] {数据1,数据2,数据3,......}   eg: int[] arr = new int[]{1,2,3};  简化格式:数据类型[] 变量名 = {数据1,数据2,数据3,......}  eg: int[] arr = {1,2,3};

三、数组的访问

1.索引: 每一个存储到数组的元素,都会自动的拥有一个编号,从0开始,这个自动编号称为数组索引 (index),可以通过数组的索引访问到数组中的元素。                                                           格式: 

             数组名[索引]

2.索引访问数组中的元素:                                                                                                                       数组名[索引] = 数值,为数组中的元素赋值                                                                                       变量 = 数组名[索引],获取出数组中的元素

public static void main(String[] args) {
 //定义存储int类型数组,赋值元素1,2,3,4,5 
 int[] arr = {1,2,3,4,5};
  //为0索引元素赋值为6 
  arr[0] = 6; 
  //获取数组0索引上的元素 
  int i = arr[0]; 
  System.out.println(i); 
  //直接输出数组0索引元素 
  System.out.println(arr[0]); 
}

四、数组操作的两个常见问题

1.索引越界:访问了数组中不存在的索引对应元素,造成索引越界问题 (代码演示区出现:ArrayIndexOutofBoundsException)

2.空指针异常:访问的数组已经不再指向堆内存的数据,造成空指针异常(代码区出现:NullPointerException)   ---->  null:空值,引用数据类型的默认值,表示不指向任何有效对象 

 

五、数组常见操作

1.获取最值(最大值)

 2.数组遍历:  就是将数组中的每个元素分别获取出来,就是遍历。遍历也是数组操作中的基石。

for循环遍历方式 

 六、数组排序

1.冒泡排序(相邻两个元素比较,较小值放前)

2.选择排序(默认开始第一个为最小值,和后面值依次比较,较小值放前)

3.插入排序

// 冒泡排序  稳定
    public static void buddleSort(int[] arr) {
        int temp;
        for (int i = arr.length - 1; i > 0; i--) {
            for (int j = 0; j < i; j++) {
                if (arr[j] > arr[j + 1]) {
                    temp = arr[j];
                    arr[j] = arr[j+ 1];
                    arr[j+1] = temp;
                }
            }
        }
    }
 
    // 选择排序 不稳定
    public static void choiceSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int k = 0, j;
            for (j = 0; j <= arr.length - i; j ++) {
                if (arr[k] < arr[j]){
                    k = j;}
            }
            if (k != j) {
                int temp = arr[k];
                arr[k] = arr[j-1];
                arr[j-1] = temp;
            }
        }
    }
 
    // 直接插入排序 稳定
    public static void insertSort(int[] arr) {
        for (int i = 1; i < arr.length; i++) {
            int temp = arr[i], j;
            for (j = i - 1; j >= 0; j--) {
                if (arr[j] > temp) {
                    arr[j+1] = arr[j];
                } else {
                    break;
                }
            }
            arr[j+1] = temp;
        }
  }

总结:对于初学java的小陈来说,数组部分只是个浅微理解,还需下来反复看注解以及多练习敲打代码,本篇内容也借鉴了笛哥的部分内容,望大佬见谅。

Guess you like

Origin blog.csdn.net/EVILDOERyyds/article/details/119462205