6. 使用【Arrays类】操作Java中的数组
Arrays 类
是 Java 中提供的一个工具类
,在 java.util 包
中。该类中包含了一些方法
用来直接操作数组,比如可直接实现数组的排序、搜索等;
6.1 要使用Arrays类,必须先导入对应的包:
import java.util.Arrays;
6.2 介绍一些Arrays中常用的方法
6.2.1 排序
语法: Arrays.sort(数组名);
可以使用 sort( )
方法实现对数组的排序
,只要将数组名
放在 sort( ) 方法的括号中,就可以完成对该数组的排序(按升序排列
);
6.2.1.2 小疑惑?
import java.util.Arrays;//导入Arrays类
public class HelloWorld {
public static void main(String[] args) {
int[] nums = {23, 564, 63, 4, 78, 12, 0};
Arrays.sort(nums);
for(int i =0; i<nums.length; i++){
System.out.println(nums[i]);
}
System.out.println(nums);//[I@659e0bfd 这是什么鬼?
//System.out.println( Arrays.sort(nums));// 会报错,和main有关把;
}
}
- 输出
nums
,打印的是神马玩意?- JavaScript是可以直接打印数组的,但Java中打印数组出来的那个是什么鬼?
- 既然我使用sort()排序了,为什么不能直接输出
Arrays.sort(nums)
?- 大致猜出,估计和main方法前的void有关系;
- Java和JavaScript还是有区别的;
6.2.2 将数组转换成字符串
语法: Arrays.toString(数组名);
可以使用 toString( )
方法将一个数组
转换成字符串
,该方法按顺序
把多个
数组元素连接
在一起,多个元素之间使用逗号和空格
隔开;
举个栗子:
-
写完这个栗子,感觉之前上面的小疑惑少了不少:
貌似println输出的是字符类型,要把数组转化成字符才能输出,输出结果是
[元素1, 元素2,...]
,之前还猜测Java数组输出形式不会是{元素1, 元素2, ...}
,捂脸啊...
6.3 java中使用foreach遍历数组
foreach 是for
语句的特殊简化版本
,它在遍历数组
、集合
的时候更简单便捷
;
语法:
for(元素类型 元素变量:遍历对象){
// 执行的代码;
}
举个栗子:
import java.util.Arrays;
public class HelloWorld{
public static void main(String[] args){
String songs[] = {"煎饼", "果子", "来一套"};
for(String song: songs ){
System.out.println(song);
}
}
}
- 对比for与foreach:
注意:
元素变量
相当于遍历对象
中的一个实例,名字只要符合标准规范即可,与JavaScript中的for item in 遍历对象
的item类似;
如果想在 foreach 语句中获取数组元素的下标,该如何做呢??
-
在外部定义一个变量,初始化为0,遍历的同时让这个变量记录循环的次数,把记录的次数当它的下标;
Java中的二维数组
二维数组也相当于一种特殊的``一维数组,只不过它的
每个数组空间中保存的是一个
一维数组`;
有点绕,我自己认为,它就是一维数组里面套一维数组
,不知道对不对;
二维数组的声明:
1.声明数组并分配空间
数据类型[][] 数组名 = new 数据类型[行的个数][列的个数];
另一种写法:
数据类型[][] 数组名;
数组名 = new 数据类型[行的个数][列的个数];
举栗:
// 定义一个三行两列的二维数组
int[][] test_demo = new int[3][2];
2.赋值
一维数组和二维数组都可以通过下标
来逐个赋值
,下标的索引是从0
开始的;
//二维数组赋值
数组名[行的索引][列的索引] = 值;
举栗:
// 定义一个2行2列的二维数组
int[][] num = new int[2][2];
给第1行第1列赋值为2
num[0][0] = 2;
也可以在声明数组的同时为其赋值:
数据类型[][] 数组名={{a1,a2...},{a11,a22...},{a21,a22...},...};
卧槽,看慕课上写的这个地方我有点懵逼了,🙃
好了,这样就清楚多了,还是小姿势不对惹的祸,嘿嘿嘿
3.处理数组
二维数组的访问和输出同一维数组一样,只是多了一个下标而已;
在循环输出时,需要外层循环再内嵌一个循环,即外层(行)
循环一次
,内层(列)
循环一圈
,就可以输出二维数组中的每一个
元素了;
二重循环:
public class HelloWorld {
public static void main(String[] args){
String[][] arr = {{"a1", "a2", "a3"}, {"b1", "b2", "b3"}};
for(int i = 0; i < arr.length; i++){
for(int j =0; j < arr[i].length; j++){
System.out.print(arr[i][j]+",");
}
System.out.println();//换行
}
}
}