java学习笔记(十)数组可变参数与Arrays工具类使用

前面学习了一维数组的使用和内存图的关系,今天学习可变参数与数组工具类的使用

1.可变参数

我们在进行数组的声明时,需要将数组进行初始化,如果现在有一个需求:

1.设计一个方法,传入两个int值进行比较,返回最大值

2.设计一个方法,传入三个int值进行比较,返回最大值

3.设计一个方法,传入三个int值进行比较,返回最大值

...................

按照正常的思路,我们有多少个需求就要写多少个方法,但是这样不仅非常低效,还会造成程序易读性变差,所以我们可以使用可变参数,比如我们用可变参数来实现这个需求:

public class Test{
	
	public static void main(String[] args){

		int max = getMax(1,2,3,4);//传入的参数作为元素压入到数组中
		
		System.out.println("最大值为:" + max);
	}
	
	public static int getMax(int... is){
		if(is.length != 0){//判断调用该方法时是否传入参数
			int max = is[0];
			for(int i = 1;i<is.length;i++){
				if(max < is[i]){
					max = is[i];
				}
			}
			return max;
		}
		return 0;
	}
	
}

 这样我们在无论传入多少个数据,我们都能返回其中最大值,不用在去每一个需求写一个方法。那么我们在声明可变参数时,在可变参数的后面不允许声明其他参数,否则就会报错,因为程序无法判断在可变参数后面应该怎么去压入元素,但是可以在可变参数前面声明变量,比如:

public static void getMax(int i,String... t){

}

这样在传入的时候,第一个元素会赋值给元素i,剩下的元素就会压入到t中。

总结:

1.可变参数底层就是数组
2.形参为可变参数,调用时可以根据需求传参或不传参
3.调用时传入的数据作为元素压入到数组中
4.可变参数后面不允许声明其他参数

 2.Arrays工具类

我们在使用前要首先导入这个工具类

import java.util.Arrays;

1.排序

语法:

Arrays.sort(数组名);

例子:

import java.util.Arrays;
public class Test{
	
	public static void main(String... args){
		
		int[] is = {67,45,81,24,16};
		
		//排序 - 16,24,45,67,81
		Arrays.sort(is);

	}
	
}

这样就排序好了,默认是从小到大

2.查找

语法:

int index = Arrays.binarySearch(数组名,查找值);

例子:

import java.util.Arrays;
public class Test{
	
	public static void main(String... args){
		
		int[] is = {67,45,81,24,16};
		
		//查找/搜索
		//如果key在数组中,就返回下标;否则,返回 -插入点-1
		int key = 51;
		int index = Arrays.binarySearch(is,key);
		System.out.println("查询到元素的下标为:" + index);//-4

	}
	
}

3.替换

语法:

Arrays.fill(数组名,替换值);
Arrays.fill(数组名,开始下标,结束下标,替换值);

例子:

import java.util.Arrays;
public class Test{
	
	public static void main(String... args){
		
		int[] is = {67,45,81,24,16};
		
		//全部替换
		Arrays.fill(is,888);
		
		//局部替换
		Arrays.fill(is,1,3,666);

	}
	
}

4.扩容/复制

语法:

int[] copy = Arrays.copyOf(目标数组,新的长度)//扩容
int[] copy = Arrays.copyOfRange(数组名,开始下标,结束下标);//复制

例子:

import java.util.Arrays;
public class Test14{
	
	public static void main(String... args){
		
		int[] is = {67,45,81,24,16};
		
		
		//扩容
		int[] copyOf = Arrays.copyOf(is,is.length*2);//copyOf(目标数组,新的长度)
		
		//局部拷贝
		int[] copyOfRange = Arrays.copyOfRange(copyOf,2,5);copyOfRange(目标数组,开始下标-包含,结束下标-不包含)

	}
	
}

5.将数组转换为字符串

语法:

String str = Arrays.toString(数组名);

例子:

import java.util.Arrays;
public class Test14{
	
	public static void main(String... args){
		
		int[] is = {67,45,81,24,16};
		
		//将数组转换为字符串
		String str = Arrays.toString(is);
		System.out.println(str);

	}
	
}

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yyyiwy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值