java基础读书笔记(四)——数组

数组

数组是一个标识符(变量名)和一组下标来代表一组具有相同数据类型的数据元素的集合。这些数据元素在计算机存储其中占用一片连续的存储空间,其中的每个数组元素在数据在数组中的位置是固定的,可通过下标的编号加以区分,并通过标识符和下标访问每一个数据元素。数组一般分为一维数组、二维数组,以此类推。通常把二维及其以上的数组称为多维数组

数组的特点:

1)定长:数组的长度是固定的。 2)按顺序访问。我们在访问某个数组元素时,计算机是从第1个元素开始顺序访问,直到指定位置的元素。

1. 一维数组

- 一维数组的声明

声明一个数组就是要确定数组名数组的维数数组元素的数据类型。数组名是用户自定义的标识符,它是数组类对象的引用类型变量的名字。数组元素的数据类型可以是Java的基本数据类型(int、float、char等),也可以是引用类型(类(class)、接口(interface)等)

int intArray[]; //声明一个数组名为intArray的整型数组
double[] b; //声明一个数组名为b的浮点型双精度数组
- 一维数组的初始化
1)直接指定初值方式
int[] a1 = {12,34,-9,65};
2)用new初始化数组

类型标识符 数组名[];

数组名 = new 类型标识符[数组长度];

int[] intArray;
intArray = new int[3];

类型标识符 数组名 = new 类型标识符[数组长度];

 int a = new int[3];

2. 二维数组

- 二维数组的声明

多维数组分配内存空间的几种方法

1)直接为每一位分配空间
int a[][]=new int[2][3];
2)从最高维开始,分别为每一维分配空间
int a[][] = new[2][];
a[0] = new int[3];
a[1] = new int[3];
- 二维数组元素的引用

数组名[下标1][下标2]

其中,下标1、下标2为整型常数或表达式,如a[2][3]等,同样。每一维的下标都从0开始

- 二维数组的初始化

1)直接对每个元素进行赋值。

2)在声明数组的同时进行初始化。

int a[][]={{2,3},{1,5},{3,4}};
- 二维数组举例

实现两个矩阵的相乘。

public class MatrixMultiply {

    public static void main(String[] args) {
        int i, j, k;
        int a[][] = new int[2][3];
        int b[][] = { { 1, 5, 2, 8 }, { 5, 9, 10, -3 }, { 2, 7, -5, -18 } };
        int c[][] = new int[2][4];
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 3; j++) {
                a[i][j] = (i + 1) * (j + 2); // 定义数组a的内容
            }
        }
        for(i = 0 ; i < 2 ; i++){
            for(j = 0;j < 4;j++){
                c[i][j] = 0;
                for(k = 0;k < 3;k++){
                    c[i][j] += a[i][k] * b[k][j];
                }
            }
        }
        System.out.println("***A***");
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 3; j++)
                System.out.print(a[i][j] + "   ");
            System.out.println();
        }
        System.out.println("***C***");
        for (i = 0; i < 2; i++) {
            for (j = 0; j < 4; j++)
                System.out.print(c[i][j] + "  ");
            System.out.println();
        }
    }
}

运行结果:
这里写图片描述

3.数组实用类Arrays

1)binarySearch(二分查找)
 binarySearch(type[] a,int fromIndex,int toIndex,type key)

调用该方法时要求数组中元素已经按升序排列,这样才能的到正确结果。

2)copyOf(拷贝)
type[] copyOf(type[] original,int newLength)

这个方法将会把original数组复制成一个新数组,Length是新数组长度。如果Length < original数组长度,则在原数组后面补充0(数值型),false(布尔型)或者null(引用型)。

3)copyOfRange
type[] copyOfRange(type[] original,int from,int to)

这个方法只复制original数组的from索引到to索引。

4)equals(相等)
boolean equals(type[] a,type[] a2)

如果a数组和a2数组长度及数组元素也一一相同,则该方法返回true.

5)fill(填充)
void fill(type[]a,type val)

把a数组所有元素赋值为val。

void fill(type[]a,int fromIndex, int toIndex,type val)

把a数组fromIndex到toIndex索引的数组元素赋值为val。

6)sort(排序)
 void sort(type[] a)

该方法对a数组的数组元素进行排序。

 void sort(type[] a,int fromIndex, int toIndex)

对a数组fromIndex到toIndex索引的数组元素进行排序

7)toString(转换为字符串)
 String toString(type[] a)

该方法将一个数组转换为字符串。该方法按顺序把多个数组元素连缀在一起,多个数组使用英文逗号(,)和空格隔开。

Arrays类的使用实例:

public class ArraysEg {
    public static void main(String[] args) {
        int[] a = new int[]{3,4,5,6}; //定义一个数组
        int[] a2 = new int[]{3,4,5,6};  

        System.out.println("a数组与a2数组是否相等:" + Arrays.equals(a, a2));

        int[] b = Arrays.copyOf(a, 6);
        System.out.println("a数组与b数组是否相等:" + Arrays.equals(a, b));

        System.out.println("b数组的元素为:" + Arrays.toString(b));

        Arrays.fill(b, 2,4,1);
        System.out.println("b数组的元素为:" + Arrays.toString(b));

        Arrays.sort(b);
        System.out.println("b数组的元素为:" + Arrays.toString(b));
    }
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/YOLO97/article/details/81433491
今日推荐