Java 7编程高级进阶 数组

数组本质上是相同数据类型的元素的集合。例如。整形数组中包含的元素每个元素都是int类型,浮点数数组中包含的每个元素都是float类型。
在这里插入图片描述

声明数组

声明数组的语法如下:
type[] arrayName;
声明整形数组如下:

int [] numbers;

声明float类型数组:

float [] floatNumbers

创建数组

int [] numbers;
numbers=new int[10];
  • 第一条语句声明了一个数组类型变量
  • 第二天语句为保存10个整数分配了连续的内存,并将首个元素的内存地址赋给了变量numbers。

访问和修改数组元素

使用索引来访问数组元素。数组每个元素都拥有一个唯一的索引值。索引从0开始。

numbers[0]
numbers[1]
numbers[2]

索引值5是违法的,访问数组边界之外的元素引发异常。
在这里插入图片描述
一个int类型占用4个字节的内存。如图
在这里插入图片描述

初始化数组

运行时初始化
在这里插入图片描述
使用数组字面量的初始化
在这里插入图片描述

数组用法

public class TestScoreAverage {
    public static void main(String[] args) {
        final int NUMBER_OF_STUDENTS = 5;
        //final 关键字在程序中创建常量,变量被声明后值不可以再此被改变
        int[] marks = new int[NUMBER_OF_STUDENTS];
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
            for (int i = 0; i < NUMBER_OF_STUDENTS; i++) {
                System.out.print("Enter marks for student #" + (i + 1) + ": ");
                String str = reader.readLine();
                marks[i] = Integer.parseInt(str);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        int total = 0;
        for (int i = 0; i < NUMBER_OF_STUDENTS; i++) {
            total += marks[i];
        }
        System.out.println("Average Marks " + (float) total
                / NUMBER_OF_STUDENTS);
    }
}

二维数组

二维数组可以别看做一张包含行和列的表格,其中每一个表格代表一个数组元素。
声明如下:

type[][] arrayName;

初始化

int [][] marks;
marks=new int [5][50];
marks[0][5]=78;
marks[2][10]=56;

在这里插入图片描述
在这里插入图片描述

二维数组使用

public class MultiDimArrayApp {
    public static void main(String[] args) {
        final int MAX_STUDENTS = 50, MAX_SUBJECTS = 3;
        int[][] marks = new int[MAX_STUDENTS][MAX_SUBJECTS];
        // Adding data to the array
        for (int id = 0; id < MAX_STUDENTS; id++) {
            for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
                marks[id][subject] = (int) (Math.random() * 100);
            }
        }
        // Printing Array
        System.out.print("Student\t");
        for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
            System.out.print("\t" + "Subject " + subject + "\t");
        }
        System.out.println();
        for (int id = 0; id < MAX_STUDENTS; id++) {
            System.out.print("Student \t" + (id + 1) + '\t');
            for (int subject = 0; subject < MAX_SUBJECTS; subject++) {
                System.out.print("\t" + marks[id][subject] + "\t");
            }
            System.out.println();
        }
    }
}

交错数组(非矩形数组)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

确定数组的长度


public class ArrayLengthApp {

    public static void main(String[] args) {
        final int SIZE = 5;
        int[] integerArray = new int[SIZE];
        float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
        String[] weekDays = {"Sunday", "Monday", "Tuesday",
            "Wednesday", "Thursday", "Friday", "Saturday"};
        int[][] jaggedArray = {
            {5, 4},
            {10, 15, 12, 15, 18},
            {6, 9, 10},
            {12, 5, 8, 11}
        };
        System.out.println("integerArray length: " + integerArray.length);
        System.out.println("floatArray length: " + floatArray.length);
        System.out.println("Number of days in a week: " + weekDays.length);
        System.out.println("Length of jaggedArray: " + jaggedArray.length);
        int row = 0;
        for (int[] memberRow : jaggedArray) {
            System.out.println("\tArray length for row "
                    + ++row + ": " + memberRow.length);
        }
    }
}

复制数组

import java.util.Arrays;

public class ArrayCopyApp {

    public static void main(String[] args) {
        float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
        float[] floatArrayCopy = floatArray.clone();
        System.out.println(Arrays.toString(floatArray) + " - Original");
        System.out.println(Arrays.toString(floatArrayCopy) + " - Copy");
        System.out.println();
        System.out.println("Modifying the second element of the original array");
        floatArray[1] = 20;
        System.out.println(Arrays.toString(floatArray)
                + " - Original after modification");
        System.out.println(Arrays.toString(floatArrayCopy) + " - Copy");
        System.out.println();
        System.out.println("Modifying the third element of the copy array");
        floatArrayCopy[2] = 30;
        System.out.println(Arrays.toString(floatArray) + " - Original");
        System.out.println(Arrays.toString(floatArrayCopy)
                + " - Copy array after modification");
    }
}

在这里插入图片描述

找出数组类的表示


public class ArrayClassNameApp {

    public static void main(String[] args) {
        final int SIZE = 5;
        int[] integerArray = new int[SIZE];
        float[] floatArray = {5.0f, 3.0f, 2.0f, 1.5f};
        String[] weekDays = {"Sunday", "Monday", "Tuesday",
            "Wednesday", "Thursday", "Friday", "Saturday"};
        int[][] jaggedArray = {
            {5, 4},
            {10, 15, 12, 15, 18},
            {6, 9, 10},
            {12, 5, 8, 11}
        };
        Class cls = integerArray.getClass();

        System.out.println(
                "The class name of integerArray: " + cls.getName());
        cls = floatArray.getClass();

        System.out.println(
                "The class name of floatArray: " + cls.getName());
        cls = weekDays.getClass();

        System.out.println(
                "The class name of weekDays: " + cls.getName());
        cls = jaggedArray.getClass();

        System.out.println(
                "The class name of jaggedArray: " + cls.getName());
        System.out.println();
        cls = cls.getSuperclass();

        System.out.println(
                "The super class of an array object: "
                + cls.getName());
    }
}

在这里插入图片描述

发布了240 篇原创文章 · 获赞 85 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/imxlw00/article/details/95726493