本文档介绍了Java中数组的基本概念、初始化方式以及数组操作的特性,特别是两个数组变量指向同一数组空间时的行为。 在Java中,数组是一种特殊的类型,用于存储同类型的多个数据。数组通过整数索引来访问其元素,索引从0开始。声明数组时,可以使用`类型[] 名称`或`类型 名称[]`两种语法,如`int[] a`或`int a[]`。数组的大小在声明时必须指定,并且一旦创建后无法更改。数组的长度可以通过`.length`属性获取。 数组的初始化可以通过`new`关键字分配内存空间,如`a = new int[10];`创建一个包含10个整数的数组。或者在声明时直接提供初始值,如`int[] b = {0,1,2,3};`。访问数组元素时,必须确保索引在有效范围内,超出范围会导致`ArrayIndexOutOfBoundsException`异常。 在Java中,数组是对象,所以两个数组变量可以指向同一个数组实例。例如,`int[] a = {1,1,1}; int[] b = a;`之后,对`b`的修改会影响到`a`,因为它们都指向相同的内存空间。这在代码示例中表现为,当遍历`b`并递增每个元素后,`a`的元素也相应增加。 当数组作为方法参数传递时,传递的是数组的引用,而不是副本。因此,方法内对数组的修改会影响原始数组。例如,`changeArray`方法会将数组元素翻倍,调用`changeArray(c);`后,数组`c`的元素值变为原来的两倍,输出为`444`。 如果需要复制一个数组,可以使用循环语句或者`System.arraycopy`方法创建一个新的独立数组,这样修改副本不会影响原始数组。例如,要创建一个与`a`具有相同元素的新数组`d`,可以写成`int[] d = new int[a.length]; System.arraycopy(a, 0, d, 0, a.length);`。 总结来说,理解Java中数组的特性和操作是编写程序的基础,包括正确初始化、访问、修改数组以及处理数组引用的特性。这些知识对于开发涉及数据集合操作的任何Java程序都至关重要。
每一个值。数组是可以通过在某种数据类型后面加上[]来定义,在此之后跟上变量名就可以
定义相应类型的数组变量了。例如:
int[] a;
还可以使用另一种方法定义数组,例如:
int a[];
以上这两种方法的定义是等价的。在这里只定义了一个整型数组变量 a,但是还没有将
a 真正的初始化为一个数组。为将一个数组初始化可以使用 new 关键字,也可以使用赋值语
句进行初始化。数组一旦被创建,就不能改变它的大小。
例如:
a = new int[10]; //将 a 初始化为大小为 10 的整型数组。
int[] b = {0,1,2,3} //将 b 初始化为大小为 4 的整型数组,
//并且 4 个分量的值分别等于 0,1,2,3
数组的下标从 0 开始计数,到数组大小减 1 结束。在 Java 中不能越过数组下标的范围
去访问数组中的数据。例如:
a[10] = 10;
如果越过数组的下标访问数据,则会产生一个名为 ArrayIndexOutOfBoundsException 的
运行时错误。为避免产生这种错误,可以通过在访问某个下标的数组元素前检查数组的大小
来避免。数组的大小可以通过数组的变量 length 返回。例如:
for (int i=0;i<a.length;i++)
a[i] = i;
由于在 Java 中数组实际上是一个类,因此两个数组变量可以指向同一个数组。请读者
5
预测以下这段代码的运行结果:
int[] a = {1,1,1};
int[] b = a;
for (int i=0;i<b.length;i++)
b[i]++;
for (int i=0;i<a.length;i++)
System.out.print(a[i]);
下载后可阅读完整内容,剩余2页未读,立即下载
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- C++多态实现机制详解:虚函数与早期绑定
- Java多线程与异常处理详解
- 校园导游系统:无向图实现最短路径探索
- SQL2005彻底删除指南:避免重装失败
- GTD时间管理法:提升效率与组织生活的关键
- Python进制转换全攻略:从10进制到16进制
- 商丘物流业区位优势探究:发展战略与机遇
- C语言实训:简单计算器程序设计
- Oracle SQL命令大全:用户管理、权限操作与查询
- Struts2配置详解与示例
- C#编程规范与最佳实践
- C语言面试常见问题解析
- 超声波测距技术详解:电路与程序设计
- 反激开关电源设计:UC3844与TL431优化稳压
- Cisco路由器配置全攻略
- SQLServer 2005 CTE递归教程:创建员工层级结构