专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Java数组初始化详解

Java数组初始化详解

更新时间:2020-10-26 17:38:34 来源:动力节点 浏览950次

我们都知道Java没有像C++那样的“集合”概念,因为Java中的所有东西都是对象,也就是我们所说的万物皆可为对象。然而,数组是用于储存多个相同类型数据的集合,看似是矛盾的,但Java确实有自己的数组,并且通过Java数组初始化来提供支持。


对于数组的声明其实都没多大问题,推荐的写法是使用 数据类型 + [] + 数组名称的方式,因为这种方式可以很清楚的表明这是某一种类型的数组。例如,声明一整数类型的数组。

int[] a;


在数组问题中,其实出现问题最多的就是数组初始化。数组的初始化分为三种方式,希望看完了本文我们再遇到数组初始化问题的时候,问题能够迎刃而解。根据我个人的理解,数组的初始化操作分为三种方式。

第一种:特殊初始化,不用new关键字完成,在数组声明的同时完成初始化操作,也被称其为静态初始化。主要原因是因为采用这种初始化的方式,数组的存储空间的分配是由编译器完成的。


下面以整数数组初始化为例,完成一个静态数组初始化:

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

Integer[] b = {

new Integer(1),

new Integer(2),

//Autoboxing

};


可以看到,a获得了一个初始值,而b没有;b将在以后赋值----这种情况下是赋给另一个数组。所有数组都有一个本质成员(无论它们是对象数组还是基本类型数组),可对其进行查询—但不是改变,从而获知数组内包含了多少个元素。这个成员就是length。与C 和C++类似,由于Java 数组从元素0 开始计数,所以能索引的最大元素编号是“length-1”。如超出边界,C 和C++会“默默”地接受,并允许我们胡乱使用自己的内存,这正是许多程序错误的根源。然而,Java 可保留我们这受这一问题的损害,方法是一旦超过边界,就生成一个运行期错误(即一个“违例”)。当然,由于需要检查每个数组的访问,所以会消耗一定的时间和多余的代码量,而且没有办法把它关闭。这意味着数组访问可能成为程序效率低下的重要原因——如果它们在关键的场合进行。但考虑到因特网访问的安全,以及程序员的编程效率,Java 设计人员还是应该把它看作是值得的。


第二种:先使用new关键字创建数组,然后再分别为数组中的元素赋值,完成初始化操作。(注:如果数组元素类型为基本数据类型,在完成new 操作之后,数组中的元素会自动初始化为空值,可以直接使用,但是数组元素为引用类型,在完成new操作之后,没有给引用类型赋值,就直接使用数组中的元素,会产生运行时异常。)

下面还是以整数数组初始化为例2,完成数组初始化:

int[] a = new int[2]; //需要指定数组的长度

a[0] = 1;

a[1] = 2;


第三种:使用new关键字创建数组,同时为数组中的元素赋值,完成出事化操作。

int[] a = new int[]{1,2,3}; //与第二种方法不同,这里new不需要指定数组的长度,数组长度由其后的初始化操作确定

int[] b = new int[]{

new Integer(1),

new Integer(2),

3

};


以上就是Java数组初始化的相关内容,想要学习更多的Java数组相关内容,可以观看本站的Java基础教程,里面有对Java数组的全方位讲解,从各种角度让你彻底学会Java数组。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>