美文网首页
4.2 java数组

4.2 java数组

作者: 我是老薛 | 来源:发表于2017-06-14 11:07 被阅读0次

    一、学习要求

    书籍参考章节: 第3.10章节

    学习目标:

    • 掌握数组的基本概念
    • 数组的定义和初始化
    • 数组的操作

    二、参考知识

    数组是用来存储一组相同类型的数据。可以创建任意类型的数组。并且数组可以是一维或多维的。另外需要注意的是,数组不是简单类型,它是对象类型。下面来详细介绍。

    基本概念

    我们先看一个简单例子:

    public class Demo {
        public static void main(String[] args) {
            //声明了一个 整型数组,并创建数组对象,指定长度为10
            int[] a = new int[10];
            for(int i=0;i<10;i++){
                //设置数组元素的值
                a[i] = i*2;
            }
            for(int j=0;j<10;j++){
                //获取数组元素的值
                int value = a[j];
                System.out.println(value);
            }
        }
    }
    

    上面简单例子包含了数组变量的声明、数组对象的创建、数组元素的访问。下面我们一一来详细描述。

    数组变量的声明

    数组变量声明的语法是:

    数据类型[] 数组变量;  或 数据类型 数组变量[];
    

    下面是合法的数组声明:

    int[]  a;
    int  a[];
    Object[]  objs;
    Object  arr[];
    

    也就是说,[]既可以放在变量名的前面,也可放在变量名的后面,且[]与前后的类型名或变量名之间可以有空格,也可以没有空格。
    注意声明数组变量时不能指定数组的长度。如下面的数组声明是非法的。

    int values[10];
    

    数组对象的创建

    java中使用关键字new创建数组对象,格式为:

    数组变量名 = new 数组元素的类型 [数组元素的个数]; 
    

    注意这里的类型必须与声明的类型一致。如:

        int []  a;
        a  = new int[10];  //创建数组对象,赋值给变量a
        a  = new int[20];  //创建新的数组对象,给变量a重新赋值
    

    也可以把声明和赋值语句合一,如:

    int[]  a = new int[10];
    

    注意,数组的长度是在创建数组对象时设置的,而且必须要设置。而且,创建数组对象后,数组的长度是不能改变的。

    数组对象的隐式创建

    在实际编码中,除了显示的通过new操作符创建数组对象外,我们还可以通过直接初始化的方法隐式的创建数组对象。如:

        int[] a = {1,2,3}; 
    

    上面语句声明并实例化了一个整型数组,长度为3,元素的值就是{}中的3个整数。

        String[] values={"my","name","is"};
    

    上面语句声明并实例化了一个字符串数组,长度为3,元素的值就是{}中的3个字符串。

    通过这种方式,定义的数组,我们后面可以改变元素值,但不能改变数组的长度,如:

            int[] a = {1,2,3};
            a[2]=5; //合法的,将第3个元素的值由初始值3改为5
            a[3]=1; //运行时抛数组越界异常
    

    数组的初始化

    对于通过new操作符创建的数组对象,创建后,在没有给其中的数组元素赋值前,系统会自动根据数组类型给其中的数组元素一个默认值。
    如下面表格:

    数组类型 元素默认值 例子
    byte,short,int,long 0 int[] a = new int[10];
    float , double 0.0 float[] a = new float[10];
    char 0 char[] a = new char[10];
    boolean false boolean[] a = new boolean[10];
    对象类型 null String[] strs = new String[10];

    数组元素的访问

    java中数组是一个有序的、有长度限制的数据集合。可以通过下标获取或设置数组中的元素值,注意下标是从0开始,下标的最大值为数组长度减1;如果下标越界,运行时会报ArrayIndexOutOfBoundsException异常。文章开头的例子已经演示了如何使用。
    另外数组的长度可以通过其length属性获取,如:

        public void show(int[] a){
            for(int i=0;i<a.length;i++){
                System.out.println(a[i]);
            }
        }
    

    上面代码用数组的length属性获取了数组的长度,利用数组下标的方式循环获取每个元素的值。
    除了上述常规的利用数组下标获取元素值外,在需要遍历数组的每个元素值时,利用for循环的另外一种使用方式(一般称为for -each方式)会更加简单。代码如:

        public void show(int[] a){
            for(int value:a){
                System.out.println(value);
            }
        }
    

    其语法格式就是 for(数据类型 元素变量名 : 数组变量) 。可以看出,这种遍历方式的代码更加简洁和方便,而且不易出错。

    空数组

    最后我们介绍下空数组,空数组指该数组的元素个数为0。但需要强调的是,空数组仍然是个java对象,它与null不同。
    创建空数组的方式如:

        int[]  a = new int[0];
    

    注意长度必须填0,不能这样写:int[] a = new int[ ]; 这样编译无法通过。
    对于空数组,调用length属性,获取的值为0。用for-each去遍历空数组,是完全没问题的,只不过不会进入循环罢了。如:

    public void show(){
            int[] a = new int[0];
            System.out.println(a.length); //输出为0
            for(int value:a){ //不会进入循环
                System.out.println(value);
            }
        }
    

    小结

    本篇文章,我们详细介绍了数组的概念和使用。对于java数组,需要牢记如下几点:
    (1)数组是对象类型,不是简单类型。
    (2)数组是有长度的,而且数组对象创建后长度不能改变。
    (3)根据下标取数组元素时,第一个元素的下标为0
    下一篇文章我们将介绍多维数组的概念和使用。

    相关文章

      网友评论

          本文标题:4.2 java数组

          本文链接:https://www.haomeiwen.com/subject/ptwjqxtx.html