• Java基础教程(6)--数组


    1.基本概念

      数组中的每一项称为元素,每个元素都通过数字索引(也可以称为下标)访问,编号从0开始。例如,第4个元素的索引为3。下面的程序创建了一个int类型的数组,把一些值放入数组中并将每个值打印出来:

    class ArrayDemo {
        public static void main(String[] args) {
            // 声明数组
            int[] anArray;
            // 指定数组的空间
            anArray = new int[10];   
            // 初始化每个元素
            anArray[0] = 100;
            anArray[1] = 200;
            anArray[2] = 300;
            anArray[3] = 400;
            // 将每个元素打印出来
            System.out.println("Element at index 0: " + anArray[0]);
            System.out.println("Element at index 1: " + anArray[1]);
            System.out.println("Element at index 2: " + anArray[2]);
            System.out.println("Element at index 3: " + anArray[3]);
        }
    } 
    

      该程序的输出是:

    Element at index 0: 100
    Element at index 1: 200
    Element at index 2: 300
    Element at index 3: 400
    

      在实际编程时,可能会使用循环结构来遍历数组的每个元素,而不是像上面的示例中那样单独处理每个元素。但是,该示例清楚地说明了数组的语法。在后续教程中将会介绍各种循环结构(for,while,和do-while)。

    2.声明一个引用数组的变量

      前面的程序使用以下代码声明了一个名为anArray的数组:

    int[] anArray;
    

      与声明其他类型的变量一样,数组变量的声明也有两个部分:数组的类型和数组的名称。数组的类型写为type[],type表示元素的数据类型,方括号表示这是一个数组变量。与其他类型的变量一样,声明一个数组变量实际上并没有创建数组,它只是告诉编译器这个变量可以引用一个指定类型的数组。还可以像其他语言那样将方括号放在名称后面,例如int anArray[],但在Java中并不推荐这种写法。

    3.创建、初始化和访问数组

      一种创建数组的方法是使用new操作符。下面的语句创建了一个长度为10的整数数组,并将这个数组的引用赋值给了anArray:

    anArray = new int[4];
    

      下面的语句为数组中的每个元素赋值:

    anArray[0] = 100;
    anArray[1] = 200;
    anArray[2] = 300;
    anArray[3] = 400;
    

      每个元素都可以通过数字索引进行访问:

    System.out.println("Element 1 at index 0: " + anArray[0]);
    System.out.println("Element 2 at index 1: " + anArray[1]);
    System.out.println("Element 3 at index 2: " + anArray[2]);
    

      也可以通过以下语法创建并初始化一个数组:

    int[] anArray = { 100, 200, 300, 400 };
    

      这里数组的长度由大括号内元素的数量决定,每个元素使用逗号分隔。
      还可以使用两对或更多对方括号声明数组(也称为多维数组),例如String[][] names。在多维数组中,数组的每一个元素都是数组。这与C或C++中的数组不同。这样做的结果是允许每个数组的长度不同,例如下面的MultiDimArrayDemo程序:

    class MultiDimArrayDemo {
        public static void main(String[] args) {
            String[][] names = {
                {"Mr. ", "Mrs. ", "Ms. "},
                {"Smith", "Jones"}
            };
            // Mr. Smith
            System.out.println(names[0][0] + names[1][0]);
            // Ms. Jones
            System.out.println(names[0][2] + names[1][1]);
        }
    }
    

      这个程序的输出是:

    Mr. Smith
    Ms. Jones
    

      可以使用数组的length属性来获取数组的大小。以下代码将数组的大小打印到控制台:

    System.out.println(anArray.length);
    

    4.拷贝数组

      有时候需要将数组拷贝一份,这样在操作一个数组时并不会影响另外一个数组。下面的代码并不能完成数组的拷贝:

    anotherArray = anArray;
    

      因为这样知识将anArray对数组的引用赋值给了anotherArray,此时的anotherArray和anArray引用了同一个数组,在任何一个变量上执行对数组的操作都会影响到数组。System类有一个arraycopy方法,使用它可将数据从一个数组复制到另一个数组:

    public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
    

      两个Object参数指定源数组和目标数组,三个int参数指定源数组中的起始位置,目标数组中的起始位置以及要复制的元素的数量。下面的声明了一个char数组,它使用System.arraycopy方法将源数组的子序列复制到目标数组中:

    class ArrayCopyDemo {
        public static void main(String[] args) {
            char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' };
            char[] copyTo = new char[7];
            System.arraycopy(copyFrom, 2, copyTo, 0, 7);
            System.out.println(new String(copyTo));
        }
    }
    

      这个程序的输出是:

    caffein
    

      Arrays类(位于java.util包中)也提供了copyOfRange方法来拷贝数组。不同之处在于,使用该方法不需要在调用方法之前创建目标数组,因为这个方法会返回一个数组:

    class ArrayCopyOfDemo {
        public static void main(String[] args) {
            
            char[] copyFrom = {'d', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd'};  
            char[] copyTo = java.util.Arrays.copyOfRange(copyFrom, 2, 9);
            System.out.println(new String(copyTo));
        }
    }
    

      这个方法的三个参数分别表示源数组,要复制元素的起始位置(包含)和结束位置(不包含)。
      java.util.Arrays类中提供的一些其他有用的方法是:

    • binarySearch方法:在数组中搜索特定值并获取其索引。
    • equals方法:比较两个数组以确定它们是否相等。
    • fill方法:使用指定值填充数组。
    • sort方法:按升序对数组进行排序。
  • 相关阅读:
    转 windows查看端口占用命令
    servlet 让浏览器输出中文,并成功打印出来.2种方法
    ctrl+shift+i eclipse快捷键,debug时显示全黑屏
    转 一台电脑安装多个tomcat
    如何从windows中拷贝文件到linux (ubuntu)??
    Eclipse Java注释模板设置简介,更改字体大小
    sikuli 如何 清空文本框中的内容??解决方法!
    servlet 中通过response下载文件
    servlet乱码 解决方法 2种方法
    关于JAVA路径 问题
  • 原文地址:https://www.cnblogs.com/maconn/p/9781120.html
Copyright © 2020-2023  润新知