第四章 一维数组 二维数组 Arrays使用

一维数组
定义:
数组是用来存储一组相同类型数据的数据结构。

当数组初始化完毕后,Java为数组在内存中分配一段连续的空间,其在内存中开辟的空间也将随之固定,数组的长度也不能再发生改变。

即使数组中没有保存任何数据,数组所占据的空间依然存在。
语法:
数据类型 [ ] 数组名=new 数据类型 [数据长度];
或者
数据类型 数组名[ ] =new 数据类型 [数据长度];

定义数组时一定要指定数组名和数组类型。

必须书写[ ],表示定义了一个数组。

“ [ 数组长度 ] ”决定连续分配的空间的个数,通过数组的length属性可以获取此长度。

数组的数据类型用于确定分配的每个空间的大小。

数组元素分配的初始值
在这里插入图片描述
元素表示与赋值
数组元素在数组里的编号即为元素下标,它标明了元素在数组中的位置。

首元素的编号规定为0,增长数为1,依次递增。

数组中的每个元素都可以通过下标来访问。

初始化
定义数组的同时一并完成赋值,即为数组初始化。

语法:

1)数据类型[ ] 数组名={值1,值2,…值n};

2)数据类型[ ] 数组名=new 数据类型[ ]{值1,值2,…值n};

遍历数组
数组和循环往往一起使用,通常使用for循环遍历数组。
案例
public class three_and_four {
public static void main(String[] args) {
int[]score=new int[5];
Scanner in=new Scanner(System.in);
for(int i=0;i<5;i++) {
score[i]=in.nextInt();
}
for(int i=0;i<5;i++) {
System.out.print(score[i]+"\t");
}
}
}

增强for循环输出数组元素
案例
public class five {
public static void main(String[] args) {
int[] scores={1,2,3,4,5};
for (int i : scores) {
System.out.print(i+"\t");
}
}
}

冒泡排序

小窍门:数组长度为n,外层循环n-1,内层循环n-1-i。
案例
public class test_three {
public static void main(String[] args) {
int[] scores = new int[5];
System.out.println(“请输入5名学员的成绩:”);
Scanner in = new Scanner(System.in);
for (int i = 0; i < scores.length; i++) {
scores[i] = in.nextInt();
}
for (int i = 0; i < scores.length-1; i++) {
for (int j = 0; j < scores.length-1-i; j++) {
if (scores[j]<scores[j+1]) {
int h = scores[j];
scores[j] = scores[j+1];
scores[j+1] = h;
}
}
}
System.out.print(“学员的成绩按降序排序为:”);
for (int i : scores) {
System.out.print(i+"\t");
}
}
}
Arrays类
该类提供一系列方法来操作数组,如排序、复制、比较、填充等,
用户直接调用这些方法减少开发难度。

Arrays类的用法
Arrays类的equals方法 //比较两个数组是否相等
案例
public class sixteen {
public static void main(String[] args) {
int[] arr1 = {1,2,3,4};
int[] arr2 = {1,2,3,4};
int[] arr3 = {2,3,4};
System.out.println(“数组1与2是否相等:”+Arrays.equals(arr1, arr2));//输出true
System.out.println(“数组2与3是否相等:”+Arrays.equals(arr2, arr3));//输出false
}
}

Arrays类sort方法 //对数组进行的元素进行升序排列
案例
public class seventeen {
public static void main(String[] args) {
int[][] array = new int[][] {{80,66},{70,54,98},{77,59}};
for (int i = 0; i < array.length; i++) {
String str = (i+1)+“班”;
Arrays.sort(array[i]);
System.out.println(str+“成绩排序后:”);
for (int j = 0; j < array[i].length; j++) {
System.out.println(array[i][j]);
}
}
}
}
/*输出结果
1班成绩排序后:
66
80
2班成绩排序后:
54
70
98
3班成绩排序后:
59
77

Arrays类toString方法 //将数组转换成字符串 方便查看
案例
public class eighteen {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
System.out.println(Arrays.toString(arr));//输出结果[1, 2, 3, 4]
}
}

Arrays类里的fill方法 //将数组中的每个元素都赋值为同一个数
案例
public class nineteen {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
Arrays.fill(arr,10);
System.out.println(Arrays.toString(arr));//输出结果[10, 10, 10, 10]
}
}

Arrays类里的copy of方法 //把数组复制为新长度的新数组
案例
public class twenty {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, 3);
System.out.println(Arrays.toString(arr2));
int[] arr3 = Arrays.copyOf(arr, 5);
System.out.println(Arrays.toString(arr3));
int[] arr4 = Arrays.copyOf(arr, 6);
System.out.println(Arrays.toString(arr4));
}
}
/*输出结果
[1, 2, 3]
[1, 2, 3, 4, 0]
[1, 2, 3, 4, 0, 0]

Arrays类里的 binarySearch方法 //查询元素在数组中的下标
案例
public class twenty_one {
public static void main(String[] args) {
int[] arr = {1,2,3,4};
int index = Arrays.binarySearch(arr, 3);
System.out.println(index);//输出结果 2
}
}
注意 使用binarySearch方法是要先按升序排列数组(sort)然后再查找某个元素的下标并输出。

二维数组
定义
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”。

语法
数据类型[ ] [ ] 数组名 或者 数据类型 数组名 [ ] [ ]

元素的表示
[ ] [ ] 中,第一个[ ]是二维数组的第一下标,类似于一维数组中的元素下标;而后一个[ ]是第二下标,相当于前一个[ ]所代表的的元素本身就是一个一维数组,第二下标即为前一个元素所代表的的数组中的元素下标。类似于嵌套结构。
在这里插入图片描述
初始化
int[ ] [ ] arr = new int[ ] [ ]{{},{},…,{}}; 或者 int arr[ ] [ ] = {{},{},…,{}};

遍历
二维数组的遍历使用双重循环,关键代码如下:

for(int i=0;i<arr.length;i++){
for(int j=0;j<arr[i].length;j++)
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值