首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

IT兄弟连 Java语法教程 数组 数组的初始化

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

这时有人会问,能不能只分配内存空间,不赋初始值呢?答案是肯定不行的,一旦为数组的每个数组元素分配了内存空间,每个内存空间里存储的内容就是该数组元素的值,即使这个内存空间存储的内容是空,这个空也是一个值(null),不管以哪种方式来初始化数组,只要为数组分配了内存空间,数组元素就具有了初始值。初始值的获得由两种形式:一种由系统自动分配;另一种由程序员指定。

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

静态初始化:初始化时由程序员显示指定每个数组元素的初始值,由系统决定数组长度。

动态初始化:初始化时程序员只指定数组长度,由系统为数组元素分配初始值。

1)静态初始化:

静态初始化的语法格式如下:

arrayName = new type[];

在上面的语法格式中,前面的type就是数组元素的数据类型,此处的type必须与定义数组变量时所使用的type相同,也可以是定义数组时所指定的type的子类,并使用花括号把所有的数组元素括起来,多个数组元素之间以英文逗号隔开,定义初始化值的花括号紧跟在[]之后,值得指出的是,执行静态初始化时,显示指定的数组元素值的类型必须与new关键字后的type类型相同,或者是其子类的实例,下面代码定义了使用这三种形式来进行静态初始化。

//定义一个int数组类型的变量,变量名为intArr

int[] intArr;

//使用静态初始化,初始化数组时只指定数组元素的初始值,不指定数组的长度

intArr = new int[];

//定义一个Object数组类型的变量,变量名为objArr

Object[] objAtt;

//使用静态初始化,初始化数组时数组元素的类型是定义数组时所指定的数组元素类型的子类

objArr = new String[]{"java","php"};

Object[] objArr2;

//使用静态初始化

objArr2 = new Object[]{"Java","php"};

因为Java语言是面向对象的编程语言,能很好的支持子类和父类的继承关系:子类实例是一种特殊的父类实例。在上面的程序中,String类型是Object类型的子类,即字符串是一种特殊的Object实例。

除此之外,静态初始化还有如下简化的语法格式:

type[] arrayName = ;

在这种语法格式中,直接使用花括号来定义一个数组,花括号把所有的数组元素括起来形成一个数组。只有在定义数组的同时执行数组初始化才支持使用简化的静态初始化。

在实际开发过程中,可能更习惯将数组定义和数组初始化同时完成。

2)动态初始化

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

arrayName = new type[length];

在上面的语法中,需要指定一个int类型的length参数,这个参数指定了数组的长度,也就是可以容纳数组元素的个数,与静态初始化相似的是,此处的type必须与定义数组时使用的type类型相同,或者是定义数组时使用的type类型的子类。下面代码示范了如何进行动态初始化:

//数组的定义和初始化同时完成,使用动态初始化语法

int[] prices = new int[5];

//数组的定义和初始化同时完成,初始化数组时元素的类型是定义数组时元素的子类

Object[] books = new String[4];

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

数组元素的类型是基本类型中的整数类型(byte、short、int、long),则元素的值是0。

数组元素的类型是基本类型中的浮点类型(float、double),则元素的值是0.0。

数组元素的类型是基本类型中的字符类型(char),则元素的值是’\u0000’。

数组元素的类型是基本类型中的布尔类型(boolean),则元素的值是false。

数组元素的类型是引用类型(类,接口和数组),则元素的值是null。

注意:不要同属使用静态初始化的动态初始化,也就是说,不要再进行数组初始化时,既指定数组的长度,也为每个数组元素分配初始值。

在数组初始化完成后,就可以使用数组了,包括为数组元素赋值、访问数组元素值和获取数组长度等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190725A04M9200?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券