Java数组的定义及使用

2020-02-10  本文已影响0人  南在南方i

数组的基本概念

所有的开发中都可能使用到数组,但并没有特别复杂,更多的是为了防止笔试中出现的问题

数组指的是一组相关变量的集合

在Java中数组属于引用数据类型,牵扯到内存的关系。对于数组的定义有以下两种语法形式:

当数组开辟之后,可采用数组[索引]的形式进行数组的访问,但是需要注意的是,任何长度的数组其范围一定是从“0”开始的。如果操作中超过了数组所允许的索引范围,则程序会出现ArrayIndexOutOfBoundsException报错

以上是数组的动态初始化,特点:数组开辟空间之后,数组中每个元素的内容都是其对应数据类型的默认值

数组输出

由于数组本身是一种顺序式的结构,且长度固定,所以在进行数组内容输出的时候,往往可以采用for循环的方式完成。因此就牵扯到数组长度的获取,在Java中可以使用数组.length的属性获取数组的长度

public class MyClass {
    public static void main(String[] args){
        int data[] = new int[3];//声明并创建数组
        //对数组赋值
        data[0] = 10;
        data[1] = 20;
        data[2] = 30;
        //利用数据.length与for循环输出数组
        for (int i = 0;i < data.length;i++){
            System.out.print(data[i]+"、");
        }
    }
}

数组的引用分析

引用数据类型的分析过程基本相同,所以数组的引用分析其本质也是一样的,与对象的流程是相同的

声明并开辟数组赋值内存关系图

下图的流程与普通对象的流程本质上是没有任何差别的,唯一的区别是普通对象保存的是属性,利用属性名称来操作,而数组保存的是一组内容,用索引来操作

声明并开辟数组赋值内存关系图
数组的引用内存关系图

引用的本质是同一个堆内存可以被不同的栈内存所指向并修改

image.png

数组的静态初始化

二维数组

二维数组实际上与数据表的形式是相同的,由行和列组成,想要确定一个数据需要得知他的行和列的编号

列索引 0 列索引 1 列索引 2
行索引 0 23 5611 845
行索引 1 223 61 8
二维数组的置换:
public class MyClass {
    public static void main(String[] args){
        int data[][] = new int[][]{{1,2,3},{4,5,6},{7,8,9}};//创建二维数组
        for (int i = 0; i < data.length; i++){
            for (int j = 0; j < data[i].length; j++){
                //将二维数组进行置换
                int temp = data[i][j];
                data[i][j] = data[j][i];
                data[j][i] = temp;
            }
        }
        for (int i = 0; i < data.length; i++){
            for (int j = 0; j < data[i].length; j++){
                System.out.print(data[i][j]);//输出
            }
            System.out.println();
        }
    }
}

一般用于训练逻辑思维

数组相关操作方法

数组拷贝

System.arraycopy(原始数组,原始数组开始点,目标数组,目标数组开始点,拷贝长度);

范例:

class ArrCopy{
    public static void main(String[] args){
        int data1[] = new int[]{1,2,3,4,5,6,7,8,9};
        int data2[] = new int[]{10,20,30,40,50,60,70,80,90};
        System.arraycopy(data2,5,data1,1,3);
        printArr(data1);
    }
    public static void printArr(int data[]){
        for (int i = 0; i < data.length; i++){
            System.out.print(data[i]+"、");
        }
    }
}

运行结果:1、60、70、80、5、6、7、8、9

数组排序

Arrays.sort(原始数组);

范例:

class ArrSort{
    public static void main(String[] args){
        int data[] = new int[]{2,1,6,4,3,9,7,8,5};
        Arrays.sort(data);
        printArr(data);
    }
    public static void printArr(int data[]){
        for (int i = 0; i < data.length; i++){
            System.out.print(data[i]);
        }
    }
}

运行结果:1、2、3、4、5、6、7、8、9

总结

上一篇 下一篇

猜你喜欢

热点阅读