目录
课前先导
一、输出数组中的最大/最小值
二、交换两个变量的值
三、向数组中添加元素
四、修改数组中的元素
五、删除数组中的元素
六、Arrays类中的方法
课前先导
今天我们就来看一下一维数组的用法以及Arrays类的方法
一、输出数组中的最大/最小值
首先我们定义个数组,然后定义变量接收最大值和最小值
public static void main(String[] args){
int[] arr = {24,12,84,65,31};
int min = 0; //接收最小值
int max = 0; //接收最大值
for(int i = 0;i < arr.length;i++){
if(min > arr[i]){
min = arr[i];
}
if(max < arr[i]){
max = arr[i];
}
}
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
}
出问题了,我们数组的最小值是12;而我们输出确实我们初始化的0;我们再来看一下,把数组中的整数全改为负数
public static void main(String[] args){
int[] arr = {-24,-12,-84,-65,-31};
int min = 0; //接收最小值
int max = 0; //接收最大值
for(int i = 0;i < arr.length;i++){
if(min > arr[i]){
min = arr[i];
}
if(max < arr[i]){
max = arr[i];
}
}
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
}
最大值应该是-12,这里输出的最大值也是我们的初始化值0,通过这两个案例说明一个问题:
数组中输出最大值或最小值时,接收的变量的初始值不能为0
我们的解决办法就是:
把数组的第一个元素赋值给最大值或最小值
public static void main(String[] args){
int[] arr = {-24,12,-84,65,-31};
int min = arr[0]; //接收最小值
int max = arr[0]; //接收最大值
for(int i = 0;i < arr.length;i++){
if(min > arr[i]){
min = arr[i];
}
if(max < arr[i]){
max = arr[i];
}
}
System.out.println("最小值:"+min);
System.out.println("最大值:"+max);
}
思路总结:
(1)定义一个变量接收数组中的最大值或最小值 ;
(2)将数组中的子一个元素(下标为0)赋值给变量
(3)利用for循环将变量依次与数组中的元素进行比较,最后输出变量
二、交换两个变量的值
这个算是之前我们漏掉的知识点,不过我们前面好像没有用到,我这里给补充一下
public static void main(String[] args){
int m = 100;
int n = 200;
int temp; //定义第三个变量来实现两个数据的交换
System.out.println("交换前的m = "+m);
System.out.println("交换前的n = "+n);
System.out.println("***************************");
temp = m; //temp = 100
m = n; // m=200
n = temp;// n = 100
System.out.println("交换后的m = "+m);
System.out.println("交换后的n = "+n);
}
三、向数组中添加元素
我们在一维数组中讲过,一维数组的长度只要指定,就不能更改,所以我们想要增加数组元素,就不能在原先的数组上动手脚。这里我们往数组中添加一个元素
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] arr = {11,22,33,44,55};//原数组
int[] arrShow = new int[arr.length+1];//声明一个新的数组
for(int i = 0;i < arr.length;i++){ //将原数组的元素赋值给新元素
arrShow[i] = arr[i];
}
System.out.print("请输入你要添加的元素:");//添加元素
arrShow[arr.length] = input.nextInt();
for(int j = 0;j < arrShow.length;j++){ //输出添加元素后的数组
System.out.print(arrShow[j]+"\t");
}
}
思路总结:
(1)声明一个新数组,长度要比原数组大(具体看你要添加的元素个数);
(2)使用for循环,将原来数组里元素按照顺序存入到新的数组中;
(3)使用Scanner类获取你要添加的数组元素;
(4)将要插入的元素存储到插入位置
四、修改数组中的元素
直接给需要修改的元素下标重新赋个值
public static void main(String[] args){
int[] arr = {11,22,33,44,55};
arr[2] = 123;
for(int i = 0;i < arr.length;i++){
System.out.print(arr[i]+"\t");
}
}
五、删除数组中的元素
删除数组中的一个元素,并将后面的元素往前移动
public static void main(String[] args){
Scanner input = new Scanner(System.in);
int[] arr = {11,22,33,44,55};//原数组
//删除下标为2的元素,并将后面的元素往前移
for(int i = 2;i < arr.length-1;i++){
arr[i] = arr[i+1];
}
arr[arr.length-1] = 0;
for(int j = 0;j < arr.length;j++){ //删除元素后的数组
System.out.print(arr[j]+"\t");
}
}
这里讲一下为什么数组元素位置移动的时候 i <arr.length-1
因为我们是通过下标访问数组的,数组的最后一个元素的下标是arr.length-1,我们通过下标把下标为 i+1 的元素赋值给 下标为 i 的元素,当for循环循环到最后一个元素arr.length-1时,程序运行是不是会把下标为arr.length的元素赋值给最后一个元素,但下标为arr.length的元素不存在啊,他超出了我们的数组长度。而且我们删除元素是把后面的元素前移,后面应该是我们的数组类型的默认值。
思路总结:
(1)找到要删除元素的下标;
(2)利用for循环将后面的元素前移;
(3)将数组最后的元素修改为默认值。
六、Arrays类中的方法
Arrays类是java语言util包中封装好的一个类,此类包含用来操作数组(比如排序和搜索)的各种方法,我们用Arrays包中的类是需要导包的(import java.util.Arrays)。此类还包含一个允许将数组作为列表来查看的静态工厂。
public static void main(String[] args){
int[] arr01 = {11,22,33,44,55};
int[] arr02 = {11,22,33,44,55};
int[] arr03 = {15,48,32,54,21};
//比较两个数组是否相等
boolean result01 = Arrays.equals(arr01, arr02);
boolean result02 = Arrays.equals(arr01, arr03);
System.out.println("arr01与arr02是否相等:"+result01);
System.out.println("arr01与arr03是否相等:"+result02);
System.out.println();
//将数组升序排序
Arrays.sort(arr03);
//将数组转换成字符串
System.out.println("将数组转换成字符串输出:"+Arrays.toString(arr03));
System.out.println();
//将数组中所有的元素都赋同一个值
Arrays.fill(arr02,100);
System.out.println("数组元素赋同一个值: "+Arrays.toString(arr02));
System.out.println();
//复制数组中固定个数的元素形成一个新的数据类型相同的数组
int[] arrNew = Arrays.copyOf(arr01, 3);
System.out.println("复制的新数组:"+Arrays.toString(arrNew));
System.out.println();
//寻找元素在数组中的下标
Arrays.sort(arr01);//先把数组元素按升序排序
int result = Arrays.binarySearch(arr01, 44);
System.out.println("元素44在数组arr01中的下标为:"+result);
}
今天的内容都是比较重要的,都是大家需要掌握的,虽然我们最后讲了Arrays类的方法,但前面的还是要求大家掌握,别偷懒,懒惰是索价极高的奢侈品,一旦到期清付,必定偿还不起,想不到自己有一天还能用得起奢侈品是不是。好了,今天的学习就到这里了,我是一米八、有腹肌、低于半小时你报警的Loveletter,觉得内容不错的小伙伴可以点点关注,我们下篇博文见,再见!