java中可以使用Arrays类中的一些static修饰的静态方法来直接操作数组
1.二分法查找 数组元素
Arrays.binarySearch(数组,需要查找的元素);
PS:获得的结果过一个int类型的角标
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义一个数组
String[] a=new String[]{"a","b","c","d","e"};
//使用二分法查找数组元素c
System.out.println(Arrays.binarySearch(a,"c"));
}
}
输出结果是2,因为数组是从0角标开始,数组元素c正好处于2角标位置
2.指定范围的二分法查找数组元素
Arrays.binarySearch(数组,从角标位置开始,角标位置结束,需要查找的元素);
PS:获得的结果过一个int类型的角标
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义一个数组
int[] a=new int[]{1,85,23,45,95,20};
//使用指定范围的二分法 需要先将数组按升序排列
Arrays.sort(a);
for(int i:a)
{
//可以看到数组已经被排序
System.out.println(i);
}
//使用二分法查找数组元素c,输出结果为1
System.out.println(Arrays.binarySearch(a,0,5,20));
}
}
3.数组复制
Arrays.copyOf(被复制的数组,新数组的长度);
PS:返回的是一个数组类型
PS:如果新数组的长度<原数组的长度,则只复制新数组长度的元素
如果新数组长度>原数组长度,则超出原数组的部分用0、false、null补全
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义一个数组
int[] a=new int[]{1,85,23,45,95,20};
int[] b=Arrays.copyOf(a,6);
for(int c:b){
//输出结果为{1,85,23,45,95,20},与数组a完全一致
System.out.println(c);
}
}
}
4.复制指定范围的数组
Arrays.copyOfRange(原数组,从角标位置开始复制,角标位置结束复制);
PS:返回一个数组类型
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义一个数组
int[] a=new int[]{1,85,23,45,95,20};
//复制指定范围的数组
int[] b=Arrays.copyOfRange(a,4,5);
for(int c:b){
//输出结果为95,从数组a的角标4开始角标5结束,不包含角标5
System.out.println(c);
}
}
}
5.比较数组
Arrays.equals(数组A,数组B);
PS:返回一个Boolean类型
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义3个数组
int[] a=new int[]{1,2,3,4};
int[] b=new int[]{2,2,2,2};
int[] c=new int[]{1,2,3,4};
//数组a与数组b不同,输出false
System.out.println(Arrays.equals(a,b));
//数组a与数组c完全相同,输出true
System.out.println(Arrays.equals(a,c));
}
}
6.为数组赋值
Arrays.fill(原数组,赋值的元素)
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义1个数组
int[] a=new int[]{1,2,3,4};
//为数组a所有角标均赋值为3
Arrays.fill(a,3);
for(int b:a){
//输出元素均为3
System.out.println(b);
}
}
}
7.为指定范围的数组赋值
Arrays.fill(原数组,从角标位置开始,到角标位置结束,赋值元素);
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义1个数组
int[] a=new int[]{1,2,3,4};
//为数组a[0,1)角标赋值为5
Arrays.fill(a,0,1,5);
for(int b:a){
//输出结果
System.out.println(b);
}
}
}
8.对数组进行升序排序
Arrays.sort(原数组);
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义1个数组
int[] a=new int[]{5,2,7,4};
//对数组a进行排序
Arrays.sort(a);
//输出结果2,4,5,7
for(int b:a){
System.out.println(b);
}
}
}
9.对指定范围的数组进行排序
Arrays.sort(原数组,从角标位置开始,到角标位置结束);
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义1个数组
int[] a=new int[]{5,2,7,4,9,8};
//对数组a进行排序
Arrays.sort(a,0,3);
//输出结果2,5,7,4,9,8
//[0,3)角标元素被排列
for(int b:a){
System.out.println(b);
}
}
}
10.将数组转换成字符串
Arrays.toString(原数组);
import java.util.Arrays;
public class Test
{
public static void main(String[] args)
{
//定义1个数组
String[] a=new String[]{"HELLO","WORLD","hello","world"};
//将数组转换成字符串
String b=Arrays.toString(a);
//输出结果[HELLO,WORLD,hello,world]
//元素之间用,和空格分隔
System.out.println(b);
}
}