前面的内容都是讲解的java的语法。从现在开始,我们讲解java的编程对象。
为了以后的对象和编程方便呢,我们今天先来讲述一个基本的java编程对象:数组。
今天的内容:
1、数组的介绍
2、数组的创建
3、数组的使用
第一部分:数组介绍
什么是数组?其实我们之前的循环当中已经用过了。今天我们来仔细介绍。
定义:
数组是一组相同类型的元素按照一定的顺序排列的集合。
来看图:
这是一个一维数组的模拟图,数组当中有A到J的10个字母,按照从0-9的顺序排列。
那么,使用数组表示这个图就是:
char[] arr = {A,B,C,D,E,F,G,H,I,J};
数组呢,有两种分类:一维数组和多维数组。
数组呢,有如下的特点:
1、Java中数组是对象,所以一般遵循对象的创建方式,要new。
2、数组中的元素必须类型相同
3、数组中的元素排列的顺序称为下标。下标从0开始累加。
4、使用下标可以操纵数组。
5、数组可以存放基本类型和对象。
6、数组是长度固定的(length属性)
7、数组创建时,声明部分不指定长度,初始化部分指定长度
8、数组可以作为参数或返回值
9、如果数组没有指定初始值,那么按类型的默认值填充元素。如int数组填充0,对象类型填充null
第二部分:创建
第一部分的介绍特点部分你现在肯定理解不了,自己使用过程中慢慢理解和熟悉。但是最好记住。
那么,我们看看如何创建?
因为数组分为一维和多维,那么我们分别讲述。
1、一维数组
声明语法:
DataType[] arrayRefVar; // 首选的方法
DataType arrayRefVar[];
示例:
int[] arr;
String arr[];
声明和实例化的语法:
一维数组声明和实例化:
DataType[] arrayRefVar = new dataType[arraySize];
示例:
int[] arr = new int[10];
一维数组声明、实例化和赋值:
dataType[] arrayRefVar = {value0, value1, ..., valuek};
示例:
int[] arr = {1,2,3};
注意:声明时需要[],实例化时需要new
2、多维数组
在介绍创建之前我们先来看看多维数组是什么?
多维数组的多维是和一维数组的一维对应的。
一维数组是数组当中的每个元素是具体的值。
多维数组是数组当中的每个元素是一个数组。数组和数组可以嵌套。
例如一个二维数组就可以表示一个矩阵。
我们看下示意图。
明白了多维数组和一维数组。我们继续看下多维数组的创建。以二维为例。
二数组声明语法:
DataType[][] arrayRefVar; // 首选的方法
DataType arrayRefVar[][];
DataType []arrayRefVar[];
示例:
int[][] array;
User[][] users;
int arr[][];
String []arr[];
二维维数组声明和初始化:
DataType[][] arrayRefVar = new dataType[arraySize][arraySize2];
示例:
int[][] arr = new int[10][5];
二维维数组声明、初始化和赋值:
dataType[][] arrayRefVar = {{value0, value1, ..., valuek},{value a,value b,value c}};
示例:
int[][] arr = {{1,2,3},{4,5,6}};
其实呢,多维数组在定义时,只强制要求第一维度的长度是固定的即可,剩余的维度可以临时填充。
那么我们可以对其进行动态初始化。如:
int[][] array = new int[10][];
只指定了一维的长度为10,二维的内容可以是任意长度的一维int数组。
详细案例如下:
第三部分:数组的使用
数组的使用可以总结为以下几个点:
1、通过数组下标(元素位置)获取某个位置的值 int x = arr[5]
2、通过数组下标设置某个位置的值 arr[5]=6
3、通过for、foreach 循环进行数组遍历
4、使用数组的length属性可以获取数组长度
那么我们一一来看:(用一维数组示例)
1、设置数组元素
方式一:初始化赋值
int[] arr = {1,2,3};
方式二:下标赋值
int[] arr = new int[3];
arr[0]=1;
arr[1]=2;
arr[2]=3;
2、获取数组元素
通过下标获取
int[] arr = {1,2,3};
int value = arr[1];//值为2
3、修改数组元素
通过下标设置
int[] arr = {1,2,3};
arr[1] = 0;//将第2个元素设置为0
4、遍历数组:可以使用for和foreach
使用for遍历数组时可以获取和设置数组元素。
for(int i=0;i
if(x == 6){
array[i]=3; //设置(修改)值
}
}
使用foreach遍历数组可以不通过下标获取元素,但不可以设置元素值。
int[] arr = {1,2,3};
for(int i :arr){}
还有一些数组的其他用法,如
5、元素的交换
如果需要交换数组的两个指定元素 arr[i]和arr[j],那么不能直接交换赋值,需要借助一个变量过渡。因为数组的元素一旦修改就无法获取到了。交换步骤如下:
1、将arr[i]赋给一个变量temp。
temp = arr[i];
2、将arr[j]的值赋给arr[i]。
arr[i]=arr[j];
3、将之前存储起来的、和arr[i]相同的临时变量赋给arr[j]。
arr[j]=temp;
6、元素移动
数组的元素移动其实是通过下标更改元素的过程。以左移一位为例:
for(int i=0;i
}
其中,因为要左移,最后一位会移动到前一位,所以遍历的长度缩小一位。
7、数组复制
方式一:手动
int arr = {1,2,3};
int arrCopy = new int[arr.length];//长度可更大,但不能小于arr
for(int i=0;i
}
方式二:使用java库提供函数
System.arraycopy(src, srcPos, dest, destPos, length);
src:原数组
srcPos:原数组开始拷贝下标
dest:目标数组
destPos:目标数组填充下标
length::总共复制长度
示例:
int[] src = {3,4};
int[] dest = {1,2,0,0,5,6};
System.arraycopy(src,0,dest,2,2);
结果:
{1,2,3,4,5,6}
方式三:使用Arrays类的copy方法。
此处不详述。自己看下api。
8、数组排序
方式一:使用一些经典的排序算法,如冒泡,选择等等。此处不详述。
方式二:Arrays类的sort方法。
上面提到过几次Arrays类,我们看看它。
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。具有以下功能:
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
数组复制:copyOf,copyOfRange
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
以上呢,就是本节的内容,主要是:
数组的介绍
如何创建和实例化数组
数组的使用
大家学会了吗?