前言
数组是代码中一次性声明大量的用于存储数据的变量,用于存储多个相同类型数据的存储模型。数组有多种维度,常用的数组为一维数组和二维数组。一维数组表示的是集合({值1,值2,值3}),格式为arr[长度]。二维数组表示的是矩阵形状{值1-1,值1-2,值1-3
值2-1,值2-2,值2-3},格式为arr[长][高]
一、数组的定义格式
格式一:数据类型 [ ] 变量名 范例: int[ ] arr 定义了一个int类型的数组,数组名是arr的数组
格式二:数据类型 变量名[ ] 范例: int arr[ ] 定义了一个int类型的变量,变量名是arr的数组
二、数组的初始化
Java中的数组必须先初始化,然后才能使用。所谓初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。
1.动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
。动态初始化的格式:
数据类型 [ ] 变量名 = new 数据类型[数组长度;其中初始化时确定数据类型、变量名、数组长度,分配数组的存储位置,数组的内容由之后的程序确定。
2.静态初始化
静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。静态初始化的格式:
数据类型 [ ] 变量名 = {元素值1,元素值2,....元素值n};其中初始化时确定数据类型、变量名、各元素初始值,系统根据确定的元素分配数组的存储位置。
三、数组元素访问
对数组进行初始化后,就可以对数据进行访问,数组变量访问方式格式:数组名。数组内部保存的数据的访问方式格式:数组名[索引]。那什么是索引?
索引
索引是数组中元素的编号方式,其作用是索引用于访问数组中的数据使用,数组名[索引]等同于变量名,是一种特殊的变量名。索引有一下特征:
特征①:索引从0开始。特征②:索引是连续的。特征③:索引逐一增加,每次加1
四、Java中内存分配
Java 程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
在每个数组初始化时就为数组分配了内存空间,初始化时在栈内存中分配一个名为变量名的存储内存,在堆内存中开辟一片内存空间存储数组各元素的值。变量名的值为堆内存内内存空间的存储地址。当使用动态初始化数组时,堆内存内的个元素的值为数组的数据类型的默认值。整数的默认值为0,浮点数的默认值为0.0,布尔值的默认值为false,字符型的默认值是空字符,引用数据类型默认值是null。
五、数组的常见操作
了解完数组的基本情况过后,可以对数组进行一些操作,常见的对数组的操作为
1遍历
遍历是对数组内每一个元素进行一次访问,常见的遍历操作是使用循环对数组遍历,因为数组的索引是连续且逐一增加,控制循环语句自加一可以使得每次循环表示一个索引。
//从0开始遍历输出一个数组长度为5的数组
for(int x=0; x<5; x++) { System.out.println(arr[x]);}
2获取数组元素数量
在使用循环遍历数组时,要控制循环的次数,一般的循环次数都是数组的长度,但是不能每次都人工敲定控制循环的次数。可以使用数组的length属性,arr.length表示循环的长度,例
int arr[] = {1,2,6,8,9,5};
arr.length = 6;arrl.length能自动获取数组的长度,将循环条件设置为i<arr.length可以确保循环的次数不会超出数组的长度。遍历的通用格式:
int[] arr = {……};
for(int x=0; x<arr.length; x++) { arr[x] //对arr[x]进行操作}
3获取最值
对数组常见的操作还包括获取最值、数组求和、求平均值等。都是通过对数组内元素遍历访问得到需要的数据。获取最值的思路为:
1:定义一个变量,用于保存最大值(或最小值)
2:取数组中第一个数据作为变量的初始值
3:与数组中剩余的数据逐个比对,每次比对将最大值保存到变量中
4:循环结束后打印变量的值
int[] arr = {12,45,98,73,60};
int max;
int max = arr[0];
for(int x=1; x<arr.length; x++) {
if(arr[x] > max) {
max = arr[x];
}
}
System.out.println("max:"+max);
获取其他的值与获取最值相似,简单修改可以使用。
数组操作的常见问题
1索引越界:
访问了数组中不存在的索引对应的元素,造成索引越界问题
2空指针异常:
访问的数组已经不再指向堆内存的数据,造成空指针异常。null:空值,引用数据类型的默认值,表示不指向任何有效对象。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了数据的基本格式的使用,简单讲解了数组的基本操作和操作中常见的小问题。