java怎样定义和使用数组,Java一维数组的定义和使用
在《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一维数组的定义和使用相关推荐
- Java数组:一维数组的定义和赋值
当数组中每个元素都只带有一个下标时,这种数组就是"一维数组".一维数组(one-dimensional array)实质上是一组相同类型数据的线性集合,是数组中最简单的一种数组. ...
- java正确定义一维数组_java一维数组定义,创建一维数组详解
前面给大家介绍了一下什么是java数组,下面要接着给大家介绍的就是java一维数组定的定义以及创建一维数组方面的知识. 数组当中的每个元素都只带有一个下标的时候,这样的数组就是一维数组,一维数组实质上 ...
- java操作数组(一维数组、二维数组的声明和遍历)
java操作数组(一维数组.二维数组的声明和遍历) 1.一维数组 三种声明数组的方法和四种遍历数组的方法 public static void main(String[] args) {//静态初始化 ...
- c语言一维数组字符串数组初始化,一维数组的定义、初始化和引用
一维数组的定义.初始化和引用 一维数组的定义.初始化和引用 1.一维数组的定义方式为: 类型说明符 数组名[常量表达式] (1)数组名的命名方法与变量名相同,遵循标识符命名规则; (2)数组是用方括号 ...
- 数组(一维数组与二维数组)
定义: 数组是构造数据类型之一 数组特点: 1.其中所有的元素具有相同的数据类型 2.两个元素之间的地址是连续的 3.一旦创建,不能改变大小 数组包括一维数组和二维数组 一维数组. 一维数组格式: 类 ...
- python输入数组_Python输入数组(一维数组、二维数组)
一维数组: arr = input("") //输入一个一维数组,每个数之间使空格隔开 num = [int(n) for n in arr.split()] //将输入每个数以空 ...
- 【C语言】数组(一维数组、二维数组)
目录 一.一维数组 1.一维数组的创建(定义) 2.一维数组的初始化 3.一维数组的内存分配 二.二维数组 1.二维数组的创建(定义) 2.二维数组的初始化 3.二维数组的内存分配 三.数组越界 四. ...
- python一维数组和二维数组_Python numpy实现二维数组和一维数组拼接的方法
Python numpy实现二维数组和一维数组拼接的方法 撰写时间:2017.5.23 一维数组 1.numpy初始化一维数组 a = np.array([1,2,3]); print a.shape ...
- 如何把二维数组放到一维数组,一维数组放到二维数组
一维数组放到二维数组 var list = [1,2,3,4,5,6,7,8,9,10]; function pages (list) {const pages = []list.forEach((i ...
- 二维数组或三维数组转换为一维数组
二维数组或三维数组转为一维数组 1.二维数组转换为一维数组: 设二维数组a[i][j],数组a行数x行,列数y列: 一维数组b[n],数组b最多存储m=x*y个元素. 令x=3,y=4则:m=12 此 ...
最新文章
- 工作流引擎设计之退回任务定义
- oracle在日期区间分页查询,Oracle 日期分页
- 每日一皮:听说学琵琶的都很文弱...
- [转]12篇学通C#网络编程——第二篇 HTTP应用编程(上)
- linux pandas教程_竞赛中的Docker使用教程
- Hibernate配置C3P0连接池(在配好基本的hibernate配置下使用)
- Android上实现柱状图表
- vue生成静态html文件_vue单文件组件,如何生成.html文件
- c#.net 生成清晰缩略图的解决方案
- 3月5日 灭点身高测量,点线齐次坐标表示,交点计算,无穷远处的点线,平移旋转的理解
- springboot在线外卖点餐系统毕业设计毕设作品开题报告开题答辩PPT
- 微软采纳我的建议在WES7增加媒体中心组件
- 郑州大学计算机上机模拟题库,郑州大学VB考试模拟试题
- B. Diverse Garland
- 教你如何试用华为云服务器
- (Window环境) curl: (6) Could not resolve host: application curl: (6) Could not resolve host: ‘localhos
- 关于ubuntu浏览器模糊不清的解决方法
- linux用屏幕录制软件下载,vokoscreenNG(屏幕录制软件)下载_vokoscreenNG(屏幕录制软件)官方下载-太平洋下载中心...
- 联想微型计算机a300,联想一体机A300.ppt
- 时间字段加一秒_Mysql自动加1秒的问题
热门文章
- html js 禁用浏览器上下滑动,原生javascript实现禁止浏览器滚动,滚动条不消失代码...
- nova3能用鸿蒙,鸿蒙公测新增6款手机,都是nova系列,包括一款4G手机
- floyd算法_常用十大算法(九)— 弗洛伊德算法
- 多分类决策树 r语言_R语言——决策树模型的相关可视化
- 提升专业素养之软件工程概述
- python2与python3区别底层的区别_Python2 与 Python3 的区别(二)?
- Mysql数据库性能优化配置:my.cnf/my.ini配置说明详解(测试机器为16GB内存)
- 一文详解双目视觉目标检测
- mysql忘记root密码怎么办,几个简单操作步骤找回mysql密码
- 【SQL Server 优化性能的几个方面】(转)