java学习之旅62--数组的拷贝_排序_二分法_命令行参数_增强for循环

本文深入讲解了Java中数组的常用操作,包括数组拷贝、排序、二分查找、填充及转换为List的方法,并通过示例代码展示具体实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组常见操作

  1. 数组的拷贝
    • System类里包含了一个 public static void arraycopy(Object src, int srcPos,Object dest, int destPos,   int length)方法,该方法可以将src数组里的元素赋给dest数组的元素,其中srcPos指定从src数组的第几个元素开始赋值,length参数指定将src数组的多少个元素赋给dest数组的元素
    • 补充:打印数组 Arrays.toString(arr)
    • public class TestArrayCopy {
    • <pre name="code" class="java" style="font-size: 18px; font-weight: bold;">	public static void main(String[] args) {
      		int[] srcArr = new int[]{2,5,3,8,9,7};
      		int[] destArr = new int[5];
      		System.arraycopy(srcArr, 1, destArr, 1, 3);
      		System.out.println(Arrays.toString(destArr));//[0, 5, 3, 8, 0]
      	}
      }
      
      
  2. 数组的排序
    • Arrays.sort(arr)
    • public class TestArraySort {
      	public static void main(String[] args) {
      	     int[] arr = {23,3,67,44,66,89,12};
      	     System.out.println(Arrays.toString(arr));//[23, 3, 67, 44, 66, 89, 12]
      	     Arrays.sort(arr);
      	     System.out.println(Arrays.toString(arr));//[3, 12, 23, 44, 66, 67, 89]
      		
      	}
      }
    • 如果数组中的元素是引用类型,怎么排序?
    • Man.java
      public class Man implements Comparable<Man> {
      	private int id;
      	private int age;
      	public int getId() {
      		return id;
      	}
      
      	public void setId(int id) {
      		this.id = id;
      	}
      
      	public int getAge() {
      		return age;
      	}
      
      	public void setAge(int age) {
      		this.age = age;
      	}
      	
      	public Man() {
      	}
      	public Man(int id, int age) {
      		super();
      		this.id = id;
      		this.age = age;
      	}
      
      	@Override
      	public String toString() {
      		return "Man [id=" + id + ", age=" + age + "]";
      	}
      
      	@Override
      	public int compareTo(Man man) {
      		if(this.age < man.age){
      			return -1;
      		}
      		if(this.age > man.age){
      			return 1;
      		}
      		return 0;
      	}
      	
      }
      


    • <pre name="code" class="java" style="font-size: 18px; font-weight: bold;"><pre name="code" class="java">TestArraySort.java
      public class TestArraySort {
      	public static void main(String[] args) {
      		Man[] mans = new Man[]{new Man(1, 30),new Man(1, 23),new Man(1, 60),new Man(1, 55)};
      		System.out.println(Arrays.toString(mans));//[Man [id=1, age=30], Man [id=1, age=23], Man [id=1, age=60], Man [id=1, age=55]]
      		Arrays.sort(mans);
      		System.out.println(Arrays.toString(mans));//[Man [id=1, age=23], Man [id=1, age=30], Man [id=1, age=55], Man [id=1, age=60]]
      		
      	}
      }

      
      
      
      
  3. 数组的二分查找
    • Arrays.binarySearch(arr)
    • public class TestBinarySearch {
      	public static void main(String[] args) {
      	    int[] arr = {12,3,34,21,45,3,32};
      	    Arrays.sort(arr);
      	    System.out.println(Arrays.toString(arr));//[3, 3, 12, 21, 32, 34, 45]
                  System.out.println(Arrays.binarySearch(arr, 21));//3
      	}
      }
      
  4. 数组的填充
    • Arrays.fill(arr)
    • public class TestArrayFill {
      	public static void main(String[] args) {
      	    int[] arr = {12,3,34,21,45,3,32};
      	    System.out.println(Arrays.toString(arr));//[12, 3, 34, 21, 45, 3, 32]
      	    Arrays.fill(arr,2,4,99);
      	    System.out.println(Arrays.toString(arr));//[12, 3, 99, 99, 45, 3, 32]
      	}
      }
  5. 数组转换为List
    • Arrays.asList(arr)
    • public class TestArrayAsList {
      	public static void main(String[] args) {
      		int[] arr = {12,3,34,21,45,3,32};
      		List<int[]> list = new ArrayList<int[]>();
      		list = Arrays.asList(arr);
      		System.out.println(list.get(0)[3]);//21
      	}
      }
  6. 冒泡排序
    • public class TestBubbleSort {
      	public static void main(String[] args) {
      		int[] arr = {12,3,34,21,45,3,32};
      		bubbleSort(arr);
      		System.out.println(Arrays.toString(arr));
      	}
      
      	public  static void bubbleSort(int[] arr) {
      		int temp;
      		for(int i=0;i<arr.length-1;i++){
      			for(int j=0;j<arr.length-1-i;j++){
      				if(arr[j]>arr[j+1]){
      					temp = arr[j];
      					arr[j] = arr[j+1];
      					arr[j+1] = temp; 
      				}
      			}
      		}
      	}
      }
  7. 命令行参数








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值