Java教程

Java基础学习之路——数组

本文主要是介绍Java基础学习之路——数组,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

数组

概念
数组:用来存储数据的,多个变量组成的一个整体,便于批量操作数据。
元素:每一个数组中的变量空间。
索引:每个元素的编号,从0开始,又叫角标。
长度:数组中可以存储多少个数据,用length表示。

声明和赋值
①动态初始化:
数据类型[] 数组名称 = new 数据类型[长度]

package com;

public class Test {
    public static void main(String[] args) {
        //动态定义数组
        String[] a = new String[5];
        //遍历
        for (int i = 0; i < 5; i++) {
            System.out.println(a[i]);
        }
    }
}

null
null
null
null
null

Process finished with exit code 0

注意:
1>由于动态初始化,开辟空间之后,赋的是数组数据类型的默认值,如String类型的数组,默认值是null,int类型的数组,默认值是0
2>两种写发都对:int[] a 和 int a[]
②静态初始化:
数据类型[] 数组名称 = new 数据类型[] {数值1,数值2,数值3}

package com;

public class Test {
    public static void main(String[] args) {
        //静态定义数组
        int[] b = new int[]{1,2,3,4,5};
        //简写形式
        int[] c = {1,2,3,4,5};
        //遍历
        for (int i = 0; i < 5; i++) {
            System.out.println("静态定义" + b[i] +" 简写形式"+ c[i] );
        }
    }
}

静态定义1 简写形式1
静态定义2 简写形式2
静态定义3 简写形式3
静态定义4 简写形式4
静态定义5 简写形式5

Process finished with exit code 0

注意:
1>静态初始化,在创建数组的时候就被赋值了;
2>new 后面的那个[]里面不需要写值,根据后面{}里的数据值决定长度。

③静态初始化的简写形式:
数据类型[] 数组名称 = {数值1,数值2,数值3}
(代码同②)
注意:
1>声明与赋值不能分开写

遍历
采用for循环的形式。

常见异常
①角标越界异常:访问到了数组索引之外的空间。
ArrayIndexOutOfBoundsException
②空指针异常:对象为null
NullPointerException

数组内存图

package com;

public class Test {
    public static void main(String[] args) {
        int[] arr = {1,2,3,4,5};
    }
}

在这里插入图片描述
1.当main方法开始压栈执行时,在main方法中开辟arr引用变量空间;
2.在堆中创建对象并初始化,若是动态形式定义的数组,数组中的默认初始值是数组数据类型的默认值;此时是静态数组的简写形式,所以里面存放的就是初始值;
3.当数组对象初始化完毕后,将内存首地址赋值给引用变量arr。
注意:
arr称为引用变量,空间在栈中开辟,而真实的数组对象是在堆中开辟。
冒泡排序
重复走访要排序的元素,依次比较相邻的两个元素,若是升序排,较大的元素会继续与下一个元素比较,同理重复的进行每次都用较大的去和下一个相邻的元素比较,直到没有相邻元素为止,这样每一趟都会遍历出一个最大值。降序同理,每趟遍历出一个最小值。

package com;
import java.util.Arrays;
public class Test {
    public static void main(String[] args) {
        int[] arr = {-19,23,45,14,21,-40};
        //外层控制比多少趟
        for (int i = 0; i < arr.length; i++){
            for (int j = 0; j < arr.length-1; j++){
                //当第一个元素大于第二个就交换位置 升序
                if (arr[j] > arr[j+1]){
                    int max = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = max;
                }
            }
        }
        System.out.println(Arrays.toString(arr));
    }
}

[-40, -19, 14, 21, 23, 45]

Process finished with exit code 0

二维数组
多维数组:Java中没有多维数组的概念,所谓多维数组就是数组套数组。
二维数组的声明与赋值
动态初始化:
数据类型[][] 数组名称 = new 数据类型[长度1][长度2] 长度2可以省略不写,但是省略后需要先赋值再使用。
静态初始化:
数据类型[][] 数组名称 = new 数据类型[][]{ {},{},{}}
简写形式:数据类型[][] 数组名称 = {{},{},{}}

package com;
public class Test {
    public static void main(String[] args) {
        //三行四列  动态初始化
        int[][] arr = new int[3][4];
        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();
        }
    }
}

0000
0000
0000

Process finished with exit code 0
这篇关于Java基础学习之路——数组的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!