数组是一个变量,也是一种引用数据类型,存储的是相同数据类型的一组数据。Java会为数组在内存中分配一段连续的内存空间。
定义数组
有两种方式
数据类型[ ] 数组名 = new 数据类型[数组长度]; //Java推荐的写法
数据类型 数组名[ ] = new 数据类型[数组长度]; //传统C语言的写法
示例:
int[] socres = new int[3];
String cities[] = new String[6];
数组元素的表示与赋值
数组中每一个元素都有一个下标,用来表示此元素在数组中的位置,第一个元素的下标为0,依次递增,数组中的每个元素都可以通过下标来访问。
语法格式:
数组名[下标] = 值;
示例:
int[] scores = new int[3];
scores[0] = 60;
scores[1] = 80;
scores[2] = 90;
数组赋值的时候不能直接给数组赋值,只能给数组中的元素赋值。赋值只有两种方式,一种是通过下标赋值,一种是在定义的时候赋值
初始化数组
初始化就是在定义的数组的时候一并完成赋值操作
语法格式如下:
数据类型[ ] 数组名 = {值1,值2,值3,......,值n};
数据类型 数组名[ ] = new 数据类型[]{值1,值2,值3,......,值n};
示例:
int[] socres = {80,85,90,86,100};
int[] socres = new int[]{80,85,90,86,100};
遍历数组
- 方法一:普通for循环遍历数组,通过数组元素的下标进行遍历访问
示例:
public class Demo {
public static void main(String[] args) {
int[] scores = {60,75,80,90,85,78};
for(int i = 0; i < scores.length; i++){
System.out.println("socres["+i+"] = "+scores[i]);
}
}
}
- 方法二:增强for循环遍历数组,通过迭代器完成对数组元素的访问
增强for循环专门用来实现对数组和集合中的数据的访问
语法格式:
for(元素类型 变量名:数组名){......};
示例:
public class Demo {
public static void main(String[] args) {
int[] scores = {60,75,80,90,85,78};
for(int i : scores){
System.out.println("socres中的元素依次为"+i);
}
}
}
二维数组
二维数组实际上是一个一维数组,它的每个元素都是一个一维的数组。二维数组就是存放数组的数组。
- 定义一个二维数组
int[][] socres = new int[3][30];
- 初始化
int[][] scores = new int{{80,90,78,98,85},{79,89,87},{60}};
int[][] scores = {{80,90,78,98,85},{79,89,87},{60}};
- 遍历二维数组
public class Demo {
public static void main(String[] args) {
int[][] array = {{80,87,90,78},{85,88,95},{68,85,90}};
for(int i = 0; i < array.length; i++){
for(int j = 0; j < array[i].length; j++){
System.out.print(array[i][j]+" "); //循环输出每一个元素
}
System.out.println();
}
}
}
Arrays类
Arrays类是JDK提供的专门用于操作数组的工具类,此类提供了一系列的方法来操作数组,如:排序、复制、比较、填充等。这些方法都是静态方法,通过类名直接调用。
常用方法:
返回值类型 | 方法 | 说明 |
---|---|---|
boolean | equals(array1,array2) | 比较两个数组是否相等 |
void | sort(array) | 对数组元素升序排列 |
String | toString(array) | 将一个数组转成一个字符串 |
void | fill(array,val) | 把数组中的所有元素都赋值成val |
与array数据类型一致 | copyOf(array,length) | 把数组复制成一个长度为length的新数组 |
int | binarySearch(array,val) | 查询元素val在已经升序排列的数组中的下标位置 |
示例:
public class Demo {
public static void main(String[] args) {
int[] array1 = {80,87,90,78};
int[] array2 = {80,87,90,78};
int[] array3 = {80,87,90};
System.out.println(Arrays.equals(array1, array2));
System.out.println(Arrays.equals(array1, array3));
Arrays.sort(array1);
for(int m:array1){
System.out.print(m+"\t");
}
Arrays.fill(array1, 60);
System.out.println(Arrays.toString(array1));
int[] array4 = Arrays.copyOf(array1, 8);
System.out.println(Arrays.toString(array4));
Arrays.sort(array2);
System.out.println(Arrays.binarySearch(array2, 90));
}
}
网友评论