动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

浅谈Java数组的初始化

05-18 14:17 938浏览
举报 T字号
  • 大字
  • 中字
  • 小字

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

初始化是一个C系编程语言术语,就是把变量赋为默认值,把控件设为默认状态,把没准备的准备好。 对于Java来说,所谓数组初始化就是让数组名指向数组对象的过程,该过程主要分为两个步骤,一是对数组对象进行初始化,即为数组中的元素分配内存空间和赋值,二是对数组名进行初始化,即为数组名赋值为数组对象的引用。

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

第一种:

特殊初始化,不用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 SE视频课程的数组部分之后,会发现数组完成初始化后,内存空间中针对该数组的各个元素就有个一个默认值:

  • 基本数据类型的整数类型(byte、short、int、long)默认值是0;
  • 基本数据类型的浮点类型(float、double)默认值是0.0;
  • 基本数据类型的字符类型(char)默认值是'\u0000';
  • 基本数据类型的布尔类型(boolean)默认值是false;
  • 类型的引用类型(类、数组、接口、String)默认值是null.
0人推荐
共同学习,写下你的评论
0条评论
代码小兵316
程序员代码小兵316

16篇文章贡献58453字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消