Java中数组的定义与使用(代码+例子)
学习目标:
掌握一维数组的使用
学习内容:
1、一维数组的定义
数组(Array),是把具有 相同类型 的多个常量值 有序组织 起来的一种数据形式。这些按一定顺序排列的多个数据称为数组。而数组中的每一个常量值称之为数组元素(item),数组中使用索引/下标(index)来表示元素存放的位置,索引从0开始,步长是1,有点像Excel表格的行号。
数组在内存中是一段连续的内存空间
2、一维数组的语法
数组元素类型[] 数组名; 如:int[] ages;
另一种方式:int ages[]; 不推荐
理解:
- 可以把int[]看成是一种数据类型——int类型的数组类型。
- int[] 数组可以看出,该数组中的元素类型是int类型的。
- String[] 数组可以看出,该数组中的元素是String类型的。
3、一维数组的初始化
数组在定义后,必须初始化才能使用。所谓初始化,就是在堆内存中给数组分配存储空间,并为每一个元素赋上初始值,数组初始化有两种方式:
1> 静态初始化;
2> 动态初始化;
数组的长度是固定的,无论以哪种,一旦初始化完成,数组的长度(元素的个数)就固定了,不能改变,除非重新对该初始化。
如果我们事先知道元素是多少,选用静态初始化,事先不知道元素是多少,选用动态初始化。
- 3.1、一维数组的静态初始化
程序员直接为每一个数组元素设置初始化值,而数组的长度由系统(JVM)决定。
- 初始化语法:
数组元素类型[] 数组名 = new 数组元素类型[]{元素1,元素2,元素3,.......};
如:int[] nums = new int[]{1,3,5,7,9};
简单写法:
int[] nums = {1,3,5,7,9}; // 简单写法,定义和初始化必须同时写出来s
- 3.2、一维数组的动态初始化
程序员只设置数组元素个数,而数组的元素的初始值由系统(JVM)决定。开发者可以提前把数组内存空间申请好,然后再程序运行过程中添值。
- 初始化语法:
数组元素类型[] 数组名 = new 数组元素类型[length];
// 例如
int[] nums = new int[5];
- 不同数据类型的初始值:
例如:
int[] arr1 = new int[3]; int类型数组,每一个元素的初始值为0
double[] arr2 = new double[5]; double类型数组,每一个元素初始值为0.0
String[] arr3 = new String[2]; String类型数组,每一个元素的初始值为null
注意 : 不能同时指定元素值和数组长度,反例如下:
int[] nums = new int[5]{1,3,5,7,9}; //错误写法
4、数组的操作
4.1、数组的基本操作
- 定义一个数组:
int[] nums = new int[]{1,3,5,7};
- 获取数组长度,语法:int size = 数组名.length;
int size = nums.length; // 输出结果4
- 获取元素值,语法:元素类型 变量名 = 数组名[index];
数组的索引从0开始,最大索引值是数组长度-1,那么索引范围是 [ 0,数组名.length - 1 ]。
// 获取第一个元素:
intele1 = nums[0]; // 输出1
// 获取第二个元素:
intele2 = nums[1]; // 输出3
// 获取第四个元素:
intele4 = nums[3]; // 输出7
- 设置元素值,语法:数组名[index] = 值;
// 设置第二个元素值
nums[1] = 30;
// 获取第二个元素
int ele2 = nums[1]; // 输出结果为30
4.2、循环遍历数组
- for循环遍历数组
代码如下:
int[] nums = new int[] { 1, 3, 5, 7 };
for (int index = 0; index < nums.length; index++) {
int ele = nums[index];
//index依次是 0、1、2、3
System.out.println(ele);
}
运行结果:
1
3
5
7
Process finished with exit code 0
- 使用for-each(增强for循环)操作数组
// for-each语法
for(数组元素类型 变量: 数组){ //TODO }
代码如下:
// 使用for-each操作数组更简单,因为可以不关心索引,其底层原理依然是上述的for循环操作数组。
int[] nums = new int[] { 1, 3, 5, 7 };
for (int ele : nums) {
System.out.println(ele);
}
运行结果:
1
3
5
7
Process finished with exit code 0
5、数组的常见异常
- NullPointerException
空指针异常(空引用异常)操作了一个尚未初始化或者没有分配内存空间的数组 - ArrayIndexOutOfBoundsException
数组的索引越界异常,操作的数组的索引不在[0,数组名.length-1]范围内
总结:
以上就是一维数组的详细知识点了,二维数组可以看我下一篇文章。
Java中数组的定义与使用(代码+例子)的更多相关文章
- C和Java中数组的定义
在学习C和Java中,关于数组的定义两者不同,在初学的时候,容易产生混淆,现在将两者对比下. 1.初始化 在C语言中,关于一维数组的定义: 完全初始化 int a[5]={1,2,3,4,5},对于 ...
- Java中数组的定义方式
数组定义方式一 动态方式(指定数组的长度) 格式: 数组存储的数据类型[]数组名字 = new 数组存储的数据类型[长度]; [] : 表示数组. 数组名字:为定义的数组起个变量名,满足标识符规范,可 ...
- java中数组的定义
1. 一维数组 int[] arr = new int[3];//需要一个容器,但是暂时不给具体的数值 int[] arr = new int[3]{1,2,3};//直接给定具体数值 int[] a ...
- Java中数组的定义,初始化和使用
定义:数组是数据类型相同的,用一个标志符名称封装在一起的一个对象序列或基本类型数据序列(一组相同数据类型元素的集合,并且分配一块连续的内存来存储). 格式:int[] a1(常用) 或者 int a ...
- c语言中数组的定义和java中数组定义的一些区别
感谢原文:https://blog.csdn.net/gzwdz778/article/details/79799408 一维情况下: c中,数组的声明需要给出数组的维数,比如: int arr[5] ...
- Java中数组的特性
转载:http://blog.csdn.net/zhangjg_blog/article/details/16116613 数组是基本上所有语言都会有的一种数据类型,它表示一组相同类型的数据的集合,具 ...
- Java中数组的创建
Java中数组的使用 1.普通数组变量的定义: //数组 //1.数组是Java中很重要的一部分,今天对数组进行了大致的了解,Java中的数组和C中数组还是有一定的区别的 //以下是总结的几种方法 p ...
- JAVA中数组的基本概念与用法
JAVA中数组的基本概念与用法 1. 数组的定义与特点 数组的一种引用数据类型 数组中可以同时存放多个数据,但是数据的类型必须统一 数组的长度在开始时就需要确定,在程序运行期间是不可改变的 虽然可以使 ...
- java中数组的相关知识
1. 2.数组的命名方法 1)int[]ages=new int[5]; 2) int[]ages; ages=new int[5]; 3)int[]ags={1,2,3,4,5}; 4)int[ ...
随机推荐
- 微信小程序清除缓冲
1:wxml定义一个清除缓冲的按钮,并绑定触摸事件 <button bindtap="clear">清空缓冲</button> 2:wxjs定义方法: // ...
- KDT入门小讲
KDT入门小讲 为了搞讲课两天搞出来的PPT,质量不高,随便看看 附:讲课用PPT 链接: https://pan.baidu.com/s/1qHea0fEhscAsQh8-Yu_j_A 提取码: 4 ...
- LGP6156题解
真·简单题 题目大意 给定 \(n\) 和 \(k\),求出这个柿子的值: \[\sum_{i=1}^n\sum_{j=1}^n(i+j)^k\mu^2(\gcd(i,j)gcd(i,j) \] 按照 ...
- 【1024打卡】C++字符串的输出((c语言风格)
c++字符串输出(c语言风格) 文章目录 c++字符串输出(c语言风格) 杂记 代码 杂记 今天程序设计竞赛白给了,果然还是太弱了,y总带带我TAT ┭┮﹏┭┮1024快乐 代码 c语言学习 #inc ...
- ElasticSearch7.3 学习之Mapping核心数据类型及dynamic mapping
1.mapping的核心数据类型以及dynamic mapping 1.1 核心的数据类型 string :text and keyword,byte,short,integer,long,float ...
- 开源版-阿里云人脸搜索M:N,人脸比对1:1
一.人脸搜索概要 本项目是阿里云视觉智能开放平台的人脸1:N的开源替代,项目中使用的模型均为开源模型,项目支持milvus和proxima向量存储库,并具有较高的自定义能力. 项目使用纯Java开发, ...
- 4月13日 python学习总结 组合与封装
一.组合 解决类与类之间代码冗余问题有两种解决方案:1.继承 2.组合 1.继承:描述的是类与类之间,什么是什么的关系 2.组合:描述的是类与类之间的关系,是一种什么有什么关系 一个类产生的 ...
- 解决使用DBeaver连接MySQL时报错-The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone.
解决使用DBeaver连接MySQL时报错,其实提示很明显. The server time zone value '�й���ʱ��' is unrecognized or represents ...
- 如何解析EML(邮件)格式的文件以及一款小巧的EML邮件阅读工具
在理解EML格式的时候,先回顾一下历史,这样有助于理解邮件的格式,比如邮件传输时为何会有多种编码方式.此外,理解EML格式也有助于理解HTTP协议. 历史溯源 由于历史原因,我们目前看到的大部分的网络 ...
- 论文翻译:2021_Acoustic Echo Cancellation with Cross-Domain Learning
论文地址:https://graz.pure.elsevier.com/en/publications/acoustic-echo-cancellation-with-cross-domain-lea ...