Java第四章数组

一、数组

1、为什么需要数组

数组是存储一组相同数据类型的数据(变量)的一个变量。

java数组基本要素 java数组的基本要素有哪些_java数组基本要素

声明一个变量就是在内存空间划出一块合适的空间

声明一个数组就是在内存空间划出一串连续的空间

2、什么是数组

数组基本要素:

①标识符:也可以叫做数组名,类似于变量中的变量名。

②数组元素:一个数组是由多个相同数据类型的数据组成的,里面每一个数据都是一个数组元素。

③元素下标:从0开始(数组中的每个元素都有按排序进行编号,这个编号是从0开始,到数组长度-1为止,这种编号叫做元素下标。)

④元素类型:我们在声明数组的时候,数组是什么数据类型,那数组里的所有元素就必须是和数组相同的数据类型。

⑤数组长度:一个数组中一共有多少个数据,这个数组的数组长度就为多少。

java数组基本要素 java数组的基本要素有哪些_java_02

二、使用数组

定义数组

在程序中去定义一个数组,通常分为4个步骤:

1、声明数组。

声明数组的语法有两种格式,分别为:

数据类型[] 数组名;

或 数据类型 数组名[];

两种格式都是可以使用的,但通常规范上提倡使用第一种,也就是 数据类型[] 数组名;

例如:

int[] scores;

int scores[];

Srting[] names;

2、分配空间。

确定数组中一共有多少个数据,例如:

scores = new int[30];

avgAge= new int[6];

names= new String[30];

分配完空间后,里面每个数据都会有个默认初始值。如果是整型的数组,里面所有元素初始值都为0;浮点型的数组,里面所有元素的初始值都为 0.0;如果是字符串类型的数组,里面所有元素的初始值都为null。

声明数组和分配空间可以合在一步完成,语法格式为:

数据类型[] 数组名 = new 数据类型[个数];

例如:

int[] scores = new int[5];

数组在内存空间中的表现:

java数组基本要素 java数组的基本要素有哪些_数据_03

3、元素赋值。

(1)我们可以在声明数组的同时,给数组里的元素赋值。有两种格式,

例如: int[] scores ={89,79,76};

int[] scores = new int[]{89,79,76};

这两种边声明边赋值的语法作用是相同的。在列出数据的同时,也已经确定了这个数组的长度,后续是无法再增加数组个数的,并且在第二种语法 中,后面加了大括号和数值,大括号前面的中括号[]里就不能再写数组的长度了,否则就会报错。

(2)动态录入信息并赋值。这种方法用的比较多。可以通过循环的方式完成动态录入过程。

例如:

Scanner input = new Scanner(System.in);
			for(int i=0;i<=30;i++){
				scores[i] = input.nextInt();
			}

4、处理数据。

定义完数组后,就可以使用数组中的数据进行运算了。

例如: a[0] = a[0] * 10;

或者通过增强型for循环(foreach)来遍历数组,完成一些特定功能。

for(int score : scores){
				sum += score;
			}
三、数组下标越界

我们定义一个数组,他的元素下标是从0开始,到数组长度-1为止,在运用数组元素的时候,如果出现元素下标超出了数组元素下标范围的情况,程序就会报错,出现ArrayIndexOutOfBoundsException一长串的英文,表示的是数组的下标越界了。

比如我们定义了一个长度为3的数组int[] scores = new int[3]

score[2] = 5;

score[3] = 8;

这里score[3]就是一个数组下标越界的情况,这个数组中只有score[0]、score[1]、score[2]三个元素。

四、冒泡排序

用二重循环实现冒泡排序
①5个数字如何存放 ②控制比较多少轮 ③控制每轮比较多少次 ④交换数据


冒泡排序口诀(升序)
①N个数字来排队 ②两两相比小靠前 ③外层循环N-1 ④内层循环N-1-i

五、Arrays类

1、使用Arrays类为数组排序

①java.util包提供的工具类 ②Arrays与类提供组的方法 如:排序、查询 ③Arrays类的sort()方法:对数组进行升序排列

Arrays.sort(数组名);

2、Arrays类

方法名称

说明

boolean equals(array1 , array2)

比较array1和array2两个数 字是否相等

sort(array)

对数组array的元素进行升序排列

String toString(array)

将一个数组array转换成一个字符串

void fill (array,val)

把数组array所有元素都赋值为val

copyOf(array , length)

把数组array复制成一个长度为length 的新数组,返回类型与复制的数组一致

int binarySearch ( array , val )

查询元素值val在数组 array 中的下标(要求数组中元素已经按升序排列)

六、二维数组

1、定义

<数据类型>[ ] [ ] 数据名;

或者<数据类型>数组[ ] [ ];

int [ ] [ ] scores; //定义二维数组
			scores = new int[ 5 ] [ 50 ];//分配内存空间
			//或者
			int[ ] [ ] scores = new int [ 5 ] [ 50 ];

2、定义二维数组时,要定义最大维数

int[ ]scores = new int[5][ ];

3、二维数组内存空间

int[  ] [  ] s =new int[3][5];

java数组基本要素 java数组的基本要素有哪些_java数组基本要素_04

java数组基本要素 java数组的基本要素有哪些_数组_05

4、赋值

①int[ ][ ]scores = new int[ ][ ]{ {88,90,60,50,20} ,{90,80,60},{85} }
②int scores[ ][ ] = { {88,90,60,50,20} ,{90,80,60},{85} }