首页 > 技术文章 > 数组基础篇(概念,定义,使用)

yumiaoxia 2018-04-15 22:26 原文

一.数组的概念

         数组是编程语言中常见的一种数据结构,可以存储多个数据,每个数组元素存放一个数据,通常可以通过数组元素的        索引来访问数组元素,包括赋值,取值,同时,java语言的数组具有其特有的特征。

             数组也是一种类型。Java中的数组要求所有的数组元素具有相同的数据类型。因此在一个数组中,数组元素的类型是

     唯一的,即一个数组只能存储一种数据类型的数组。

           Java的数组即可以存储基本类型的数据,也可以存储引用类型的数据,只要数组元素的类型统一即可。

           数组也是一种数据类型,它本身是一种引用类型,例如int是一个基本类型,但int[]就是一种引用类型了。

           由于java语言面向对象的特征,类与类之间支持继承关系,所以数组的数组元素之间可以是父子关系,

    但是该数组的数据类型仍然是唯一的,指向数组元素的最高父类,例如有一个水果数组,要求每个元素是水果,但它数组       元素可以是苹果,也可以是香蕉,这是他们都继承了fruit类,因此数组元素的类型还是唯一的

二.数组的定义

   Java支持两种语法格式定义数组:

type[] arrayName;     //推荐这种方式,语义明确,可读性强
type arryName[];      //早期使用,不推荐

        数组是一种引用类型的变量,因此使用它定义变量时,仅仅定义了一个引用变量(也就是定义了一个空指针),

还未指向任何有效的内存,因此定义数组时不能指定数组的长度,也不能被使用。

三.数组的初始化

         Java语言中数组必须先初始化才能被使用。所谓初始化,就是为数组的数组元素分配内存空间,并为每个数组元素

赋初始值。

         数组的初始化有两种方式:

1.静态初始化

   语法格式是:

arrayName=new type[]{element1,element2,element3,...};

//简化格式如下
arrayName={element1,element2,element3,...};

 

 静态初始化时,显式指定的数据类型必须与new关键字后面的type类型相同,或者是其子类类型。

 

2.动态初始化

   动态初始化只指定数组长度,由系统为每个数组元素赋初始值,动态初始化语法格式如下:

arrayName=new type[length];

 

        执行动态初始化时,程序员只需指定数组的长度,几位每个数组元素分配所需的内存空间,系统负责为这些数组元素分配初始值。指定类型的规则如下:

         a)数组元素类型是基本类型的整数类型(byte,short,int,long),则指定初始值0;

         b)数组元素类型是基本类型的浮点类型(float,double),则指定初始值0.0;

         c)数组元素类型是基本类型的字符类型(char),则赋初始值'\u0000';

         d)数组元素类型是基本类型的布尔类型(boolean),则赋初始值false;

         e)数组元素类型是引用类型(类,接口,数组),则赋初始值null;

 

四.for-each遍历数组

              通过索引访问数组元素时,索引不能小于0或大于等于数组的长度,否则会

         抛出java.lang.ArrayIndexOutOfBoundsException

             使用for-each循环遍历数组时,无须获得数组的长度,也无需索引来访问数组元素,比较简单。

        但是使用for-each循环不能给数组元素赋值

public static void main(String[] args) 
    {
        String[] fruits={"苹果","香蕉","梨","桃子"};
        for(String fruit:fruits){
            fruit="水果";      //fruit只是个临时变量,不是数组元素,给他赋值对数组元素没有意义
        }
        System.out.println(fruits[0]);
    }

输出:

苹果

 

推荐阅读