java学习之路:10.数组的基本操作(遍历,替换,排序,复制,查询)

时间:2022-07-28
本文章向大家介绍java学习之路:10.数组的基本操作(遍历,替换,排序,复制,查询),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1.遍历数组

//第一种就是使用for循环实现遍历
package number;
public class Xuexi {
 public static void main(String[] args) {
int b[][]=new int[][] {{1},{2,3},{4,5,6}};
for(int k=0;k<b.length;k++)
{
 for(int c=0;c<b[k].length;c++)
 {
  System.out.println(b[k][c]);
 }
 System.out.println();
}
 }
}

运行结果如图:

书上介绍除了使用for语句,还可以使用foreach语句,

package number;
public class Xuexi {
 public static void main(String[] args) {
    int b[][]=new int[][] {{1},{2,3},{4,5,6}};
    int i=0;
for(int x[]:b)
{
 i++;
 int j=0;
 for(int e:x)
 {
  j++;
  if(i==b.length&&j==x.length)
  {
   System.out.print(e);
  }
  else
  {
   System.out.print(e+",");
  }
 }
}
 }
}

运行结果:

不知道大家有没有注意到print和println的区别,看第一块代码,会发现它会换行,而第二块代码不会,通过查找得知print+换行=println。

2.填充替换数组元素

数组中的元素定义完成以后,可通过Arrays类的静态方法fill()来对数组中的元素进行替换。

(1)fill(int[] a,int value) a:要进行替换的数组 value:要替换的值

(2) fill(int[] a,int fromIndex,int toIndex,int value) fromIndex:第一个填充的索引 toIndex:最后一个填充的索引==(不包括)==

区别在于(1)用于全部替换,(2)用于指定替换。

package number;
import java.util.Arrays;//别忘了添加Attays类
public class Xuexi {
 public static void main(String[] args) {
  int arr1[]=new int[]{1,2,3,4,5};
  Arrays.fill(arr1,8);
  for(int i=0;i<arr1.length;i++)
  {
  System.out.println("全部替换后"+arr1[i]);
  }
  System.out.println();
  int arr2[]=new int[]{1,2,3,4,5};
  Arrays.fill(arr2,2,4,1);
  for(int i=0;i<arr2.length;i++)
  {
  System.out.println("指定替换后"+arr2[i]);
  }
 }
}

运行结果:

3.对数组进行排序

可使用sort()方法进行排序

package number;
import java.util.Arrays;
public class Xuexi {
 public static void main(String[] args) {
 int arr[]=new int[]{11,27,13,48,45};
    Arrays.sort(arr);
for(int i=0;i<arr.length;i++)
{
 System.out.println(arr[i]);
}
 }
}

运行结果:

4.复制数组

Arrays类的copyOf()方法与copyOfRange()方法可以实现对数组的复制,copyOf()方法复制数组到指定长度,copyOfRange()方法是将指定数组的指定长度复制到新数组中。

copyOf(arr,newlength) arr:要复制的数组 newlength:指复制后的新数组的长度,如果新数组的长度大于数组arr的长度,则用0来填充,如果复制后的数组长度小于arr的长度,则会从数组arr的第一个元素开始截取至满足新数组长度为止。

package number;
import java.util.Arrays;
public class Xuexi {
 public static void main(String[] args) {
 int arr[]=new int[]{11,27,13,48,45};
    int newarr[]=Arrays.copyOf(arr,5);
    for(int i=0;i<newarr.length;i++)
    {
     System.out.println(newarr[i]);
    }
 }
}

运行结果:

copyOfRange(arr,int formIndex,toIndex) formIndex:指定开始复制数组的索引位置,必须在0到整个数组长度之间。toIndex:要复制范围的最后索引位置,可大于arr的长度,但不包括toIndex索引的元素。

package number;
import java.util.Arrays;
public class Xuexi {
 public static void main(String[] args) {
 int arr[]=new int[]{11,27,13,48,45};
    int newarr[]=Arrays.copyOfRange(arr,0,3);
    for(int i=0;i<newarr.length;i++)
    {
     System.out.println(newarr[i]);
    }
 }
}

运行结果:

package number;
import java.util.Arrays;
public class Xuexi {
 public static void main(String[] args) {
 int arr[]=new int[]{11,27,13,48,45};
    int newarr[]=Arrays.copyOfRange(arr,0,9);  //将3改为9后
    for(int i=0;i<newarr.length;i++)
    {
     System.out.println(newarr[i]);
    }
 }
}

运行结果:

5.数组查询

(1)binarySearch(Object[],Object key) a:要搜索的数组 key:要搜索的值,如果key在数组中,返回索引(下角标),否则返回-1或-(插入点)。

(2)binarySearch(Object[],int formIndex,int toIndex,Object key) formIndex:指定范围的开始处索引 toIndex:指定范围的结束处索引(不包含)

用法和上面一样,就不再列出该方法的代码。