java基础教程:数组(12)

来源:互联网 发布:淘宝代购家具是骗局 编辑:程序博客网 时间:2024/05/19 12:36


前面的内容都是讲解的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<array.length;i++){
int x = array[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<array.length-1;i++){
arr[i]=arr[i+1];//每一位都等于后一位
}
其中,因为要左移,最后一位会移动到前一位,所以遍历的长度缩小一位。


7、数组复制

方式一:手动

int arr = {1,2,3};
int arrCopy = new int[arr.length];//长度可更大,但不能小于arr
for(int i=0;i<arr.length;i++){
arrCopy[i] = arr[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 方法能对排序好的数组进行二分查找法操作。



以上呢,就是本节的内容,主要是:

数组的介绍

如何创建和实例化数组

数组的使用



大家学会了吗?




原创粉丝点击