在《Java数组的声明与初始化》中,我们已经学会了基本类型数组的声明、初始化。数组除了可以按数据类型来进行分类外,还可以按照数组的维数来进行分类,比如一维数组(类似一个数轴)、二维数组(类似一个表格)等。

什么是一维数组

我们学习的数组的声明、初始化所使用的例子都属于一维数组的范畴。

一维数组在内存中的结构是一条连续的内存空间。内存结构对应着逻辑结构,我们所使用到的一维数组也是线性的,如图 1 所示。

图 1  一维数组的内存顺序与逻辑顺序的关系

一维数组的使用及遍历

在学会了一维数组的声明、赋值,并了解了它的物理顺序和逻辑顺序之间的关系之后,我们可能会想到一维数组应该如何使用呢?怎么去取得其中的元素呢?怎么去遍历一维数组的所有元素呢?

我们在《Java数组的声明与初始化》中了解了一维数组的物理顺序和逻辑顺序,其中指出了数组第一个元素的下标值是 0,所以可以通过以下形式去获得一个数组中某个位置的值:

array[index];

其中,array 表示数组名,index 表示数组的下标值。其使用方式如示例 1 所示。

【示例 1】输出数组中的元素

package chapter5;

public class getValueOfArray {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 };

System.out.println(scores[80]); // 输出scores数组中下标为0的元素

}

}

程序编译后,运行结果如下:

80

如果需要修改数组中某个位置的元素值,也可以通过示例 2 所示的方式来进行操作。

【示例 2】修改数组中某个位置的元素值

package chapter5;

public class updateValueOfArray {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 }; // 定义数组

System.out.println("输出数组中的第一个元素数值为:" + scores[0]);

scores[0] = 100; // 修改数值

System.out.println("修改后,数组中的第一个元素数值为:" + scores[0]);

}

}

程序编译后,运行结果如下:

输出数组中的第一个元素数值为:80

修改后,数组中的第一个元素数值为:100

数组的下标是从 0 开始的,所以最大下标值是数组的长度减去 1。如果下标在这个区间之外,就会抛出 java.lang.ArrayIndexOutOfBoundsException 异常,如示例 3 所示。

【示例 3】数组下标越界

package chapter5;

public class OutOfBounds {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 };

System.out.println(scores[3]); // 这里下标越界了

}

}

程序编译后,运行结果如下:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3

at test1/chapter5.OutOfBounds.main(OutOfBounds.java:5)

通过示例 3 可以看出,在访问数组中的第 4 个元素(下标为 3)时,数组下标发生越界。因为数组中只有 3 个数值,无法提供第 4 个数值的访问,所以程序抛出了数组越界的异常。

在进行数组操作时,经常要做的是对数组进行遍历。遍历一个数组的时候,一般使用 for 循环来完成。在遍历时,可以使用一个数组的重要属性 length,它存储着这个数组的元素个数。在使用 for 循环时,可以合理地使用该属性。使用普通的 for 循环对数组进行遍历方法如示例 4 所示。

【示例 4】普通for循环遍历数组

package chapter5;

public class traverseArray1 {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 }; // 定义数组

for (int i = 0; i < scores.length; i++) { // 使用for循环

System.out.println(scores[i]); // 输出数组的元素

}

}

}

程序编译后,运行结果如下:

80

99

88

在对数组操作时,还可以使用增强型的 for,其使用方式如示例 5 所示。

【示例 5】增强for循环遍历数组

package chapter5;

public class enhanceTtraverseArray {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 }; // 定义数组

for (int i : scores) { // 使用增强for循环

System.out.println(i); // 输出数组中的元素

}

}

}

程序编译后,运行结果如下:

80

99

88

示例 4 和示例 5 使用了两种 for 循环来操作数组中的元素。对于增强 for 循环来说,临时变量值是用赋值的方式得到的,并不是数组中存放的值的本身。换句话说,它们在栈空间中的地址值不相等,如图 2 所示。

图 2  增强 for 循环与普通 for 循环遍历数组的区别

我们可以直接通过 array[index] 的方式去修改数组中的元素值,但是不能通过临时变量去修改数组中的元素值,如示例 6 所示。

【示例 6】增强for循环修改数组中的元素

package chapter5;

public class updateEnhanceTArray {

public static void main(String[] args) {

int[] scores = { 80, 99, 88 }; // 定义数组

for (int i : scores) { // 把所有元素的值都赋为0

i = 0;

}

for (int i : scores) { // 打印现在数组的结果

System.out.println(i);

}

}

}

程序编译后,运行结果如下:

80

99

88

通过示例程序 6 可以看出,使用增强 for 循环时,不能通过临时变量去修改数组中的元素值,只能使用普通 for 循环的方式对数组中的元素进行修改。

java怎样定义和使用数组,Java一维数组的定义和使用相关推荐

  1. Java数组:一维数组的定义和赋值

    当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...

  2. java正确定义一维数组_java一维数组定义,创建一维数组详解

    前面给大家介绍了一下什么是java数组,下面要接着给大家介绍的就是java一维数组定的定义以及创建一维数组方面的知识. 数组当中的每个元素都只带有一个下标的时候,这样的数组就是一维数组,一维数组实质上 ...

  3. java操作数组(一维数组、二维数组的声明和遍历)

    java操作数组(一维数组.二维数组的声明和遍历) 1.一维数组 三种声明数组的方法和四种遍历数组的方法 public static void main(String[] args) {//静态初始化 ...

  4. c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用

    一维数组的定义.初始化和引用 一维数组的定义.初始化和引用 1.一维数组的定义方式为: 类型说明符 数组名[常量表达式] (1)数组名的命名方法与变量名相同,遵循标识符命名规则; (2)数组是用方括号 ...

  5. 数组(一维数组与二维数组)

    定义: 数组是构造数据类型之一 数组特点: 1.其中所有的元素具有相同的数据类型 2.两个元素之间的地址是连续的 3.一旦创建,不能改变大小 数组包括一维数组和二维数组 一维数组. 一维数组格式: 类 ...

  6. python输入数组_Python输入数组(一维数组、二维数组)

    一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空 ...

  7. 【C语言】数组(一维数组、二维数组)

    目录 一.一维数组 1.一维数组的创建(定义) 2.一维数组的初始化 3.一维数组的内存分配 二.二维数组 1.二维数组的创建(定义) 2.二维数组的初始化 3.二维数组的内存分配 三.数组越界 四. ...

  8. python一维数组和二维数组_Python numpy实现二维数组和一维数组拼接的方法

    Python numpy实现二维数组和一维数组拼接的方法 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape ...

  9. 如何把二维数组放到一维数组,一维数组放到二维数组

    一维数组放到二维数组 var list = [1,2,3,4,5,6,7,8,9,10]; function pages (list) {const pages = []list.forEach((i ...

  10. 二维数组或三维数组转换为一维数组

    二维数组或三维数组转为一维数组 1.二维数组转换为一维数组: 设二维数组a[i][j],数组a行数x行,列数y列: 一维数组b[n],数组b最多存储m=x*y个元素. 令x=3,y=4则:m=12 此 ...

最新文章

  1. 工作流引擎设计之退回任务定义
  2. oracle在日期区间分页查询,Oracle 日期分页
  3. 每日一皮:听说学琵琶的都很文弱...
  4. [转]12篇学通C#网络编程——第二篇 HTTP应用编程(上)
  5. linux pandas教程_竞赛中的Docker使用教程
  6. Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)
  7. Android上实现柱状图表
  8. vue生成静态html文件_vue单文件组件,如何生成.html文件
  9. c#.net 生成清晰缩略图的解决方案
  10. 3月5日 灭点身高测量,点线齐次坐标表示,交点计算,无穷远处的点线,平移旋转的理解
  11. springboot在线外卖点餐系统毕业设计毕设作品开题报告开题答辩PPT
  12. 微软采纳我的建议在WES7增加媒体中心组件
  13. 郑州大学计算机上机模拟题库,郑州大学VB考试模拟试题
  14. B. Diverse Garland
  15. 教你如何试用华为云服务器
  16. (Window环境) curl: (6) Could not resolve host: application curl: (6) Could not resolve host: ‘localhos
  17. 关于ubuntu浏览器模糊不清的解决方法
  18. linux用屏幕录制软件下载,vokoscreenNG(屏幕录制软件)下载_vokoscreenNG(屏幕录制软件)官方下载-太平洋下载中心...
  19. 联想微型计算机a300,联想一体机A300.ppt
  20. 时间字段加一秒_Mysql自动加1秒的问题

热门文章

  1. html js 禁用浏览器上下滑动,原生javascript实现禁止浏览器滚动,滚动条不消失代码...
  2. nova3能用鸿蒙,鸿蒙公测新增6款手机,都是nova系列,包括一款4G手机
  3. floyd算法_常用十大算法(九)— 弗洛伊德算法
  4. 多分类决策树 r语言_R语言——决策树模型的相关可视化
  5. 提升专业素养之软件工程概述
  6. python2与python3区别底层的区别_Python2 与 Python3 的区别(二)?
  7. Mysql数据库性能优化配置:my.cnf/my.ini配置说明详解(测试机器为16GB内存)
  8. 一文详解双目视觉目标检测
  9. mysql忘记root密码怎么办,几个简单操作步骤找回mysql密码
  10. 【SQL Server 优化性能的几个方面】(转)