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[ ...
 
随机推荐
- Python 列表的(元素的删除)
			
del:根据索引值删除元素 del 可以删除列表中的单个元素,格式为: del listname[index] 其中,listname 表示列表名称,index 表示元素的索引值.del 也可以删除中 ...
 - 《Shader入门精要》中MVP变换的Projection矩阵与《GAMES101图形学入门》中的区别
			
game101的透视投影的投影矩阵是这样的 正交投影是这样的 而shader入门精要的透视投影矩阵是这样子 正交投影矩阵是这样子 game101的透视投影是这样得到的 而正交投影的时候并没有假设中心点 ...
 - TLS 1.0 至 1.3 握手流程详解
			
概述 TLS 全称为 Transport Layer Security(传输层安全),其前身是 SSL,全称为 Secure Sockets Layer(安全套接字层),它的作用是为上层的应用协议提供 ...
 - Grafana镜像在阿里云镜像站首发上线
			
阿里云镜像站体验官招募中, 在各大社区平台分享相关内容累计积分就可赢得Airpods耳机和移动硬盘等奖励,银牌体验官的奖励人数不设限哦.立即参与 简介 Grafana是一个跨平台的开源的度量分析和可视 ...
 - python 实现批量md转word
			
# qianxiao996精心制作 #博客地址:https://blog.csdn.net/qq_36374896 #md批量转word import os def auto_md_to_docx(f ...
 - CVE-2014-3120 (命令执行漏洞)
			
环境配置 vulhub环境搭建 https://blog.csdn.net/qq_36374896/article/details/84102101 启动docker环境 cd vulhub-mast ...
 - [root-me](web-client)write up 一个大坑怎么填啊
			
root-me web-client writeup 地址:www.root-me.org HTML - disabled buttons 打开网页发现按钮不能按,查看源代码,有 'disabled' ...
 - 学习廖雪峰的Git教程4--继续学习分支管理
			
查看分支 git branch -a 查看远程分支 git branch 查看本地分支 创建分支 git checkout -b branch-name 在远程创建一个属于自己的分支 删除分支 删除本 ...
 - 推荐几个免费的在线学习IT技能视频网站:
			
1.慕课网:http://www.imooc.com/course/list 2.极客学院:http://www.jikexueyuan.com/ 3.百度传课:http://www.chuanke. ...
 - Java 中 interrupted 和 isInterrupted 方法的区别?
			
interrupt interrupt 方法用于中断线程.调用该方法的线程的状态为将被置为"中断"状态. 注意:线程中断仅仅是置线程的中断状态位,不会停止线程.需要用户自己去监 视 ...