java的知识点17——java.util.Arrays类、多维数组

java.util.Arrays类

Arrays类包含了:排序查找填充打印内容等常见的操作。

打印数组

package cn.dym08;
import java.util.Arrays;

public class Test01 {
	public static void main(String [] args) {
		int []a= {1,2};
		System.out.println(a); //打印数组引用的值
		System.out.println(Arrays.toString(a)); //打印数组元素的值
	}
}

此处的Arrays.toString()方法Arrays类的静态方法,不是前面讲的Object的toString()方法。

数组元素的排序

package cn.dym08;
import java.util.Arrays;
public class Test02 {
	public static void main(String[] args) {
		int []a= {1,2,323,23,541,287,9,42};
		System.out.println(Arrays.toString(a));
		Arrays.sort(a);
		System.out.println(Arrays.toString(a));
	}
}

数组元素是引用类型的排序(Comparable接口的应用)

package cn.dym08;
import java.util.Arrays;
class Man implements Comparable{
	int age;
	int id;
	String name;
	public Man(int age, String name) {
		super();
		this.age = age;
		this.name = name;
	}
	public String toString() {
		return this.name;
	}
	public int compareTo(Object o) {
		Man man=(Man)o;
		if(this.age<man.age) {
			return -1;
		}
		if(this.age>man.age) {
			return 1;
		}
		return 0;
	}
}
public class Test03 {
	public static void main(String []args) {
		Man[] msMans= {new Man(3,"a"),new Man(60,"b"),new Man(2,"c")};
		Arrays.sort(msMans);
		System.out.println(Arrays.toString(msMans));
	}
}

 

二分法查找

package cn.dym08;
import java.util.Arrays;
public class Test04 {
	public static void main(String[] args) {
		int []a= {1,2,354,154,1145,54,78,45};
		System.out.println(Arrays.toString(a));
		Arrays.sort(a);  //使用二分法查找,必须先对数组进行排序
		System.out.println(Arrays.toString(a));
		//Arrays.binarySearch(a, 12),返回排序后新的索引位置,若未找到则返回负数
		System.out.println("该元素的索引:"+Arrays.binarySearch(a, 12));
		System.out.println("该元素的索引:"+Arrays.binarySearch(a, 45));
	}
}

数组填充

package cn.dym08;

import java.util.Arrays;

public class Test05 {
	public static void main(String[] args) {
		int [] a= {1,45,48,98,487,145,2};
		System.out.println(Arrays.toString(a));
		Arrays.fill(a, 2,4,100);  //将2到4索引对的元素的值替换为100//只取开始,不取结束
		System.out.println(Arrays.toString(a));
	}
}

 


多维数组

      多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。最多到二维数组(一般使用容器,二维数组用的很少)

二维数组的声明

package cn.dym08;

public class Test06 {
	public static void main(String[] args) {
		//Java中多维数组的声明和初始化应从低维到高维的顺序进行
		int [][] a=new int[3][];
		a[0]=new int[2];
		a[1]=new int[4];
		a[2]=new int[3];
		//int a1[][]=new int[][4]  //非法
	}
}

二维数组的静态初始化

package cn.dym08;

public class Test07 {
	public static void main(String[] args) {
		int [][]a= {{1,2,3},{3,4},{3,5,6,8}};
		System.out.println(a[2][3]);
	}
}

二维数组的动态初始化

package cn.dym08;
import java.util.Arrays;
public class Test08 {
	public static void main(String [] args) {
		int [][] a=new int[3][];
		//a[0]={1,2,5}; //错误,没有声明就初始化
		a[0]=new int[] {1,2};
		a[1]=new int[] {2,2};
		a[2]=new int[] {2,3,5,4};
		System.out.println(a[2][3]); //结果为:4
		System.out.println(Arrays.toString(a[0]));
		System.out.println(Arrays.toString(a[1]));
		System.out.println(Arrays.toString(a[2]));
		
	}
}

 

获取数组长度  属性 length

package cn.dym08;
import java.util.Arrays;
public class Test08 {
	public static void main(String [] args) {
		int [][] a=new int[3][];
		//a[0]={1,2,5}; //错误,没有声明就初始化
		a[0]=new int[] {1,2};
		a[1]=new int[] {2,2};
		a[2]=new int[] {2,3,5,4};
		//System.out.println(a[2][3]); //结果为:4
		//System.out.println(Arrays.toString(a[0]));
		//System.out.println(Arrays.toString(a[1]));
		//System.out.println(Arrays.toString(a[2]));
		System.out.println(a.length);
		System.out.println(a[0].length);
		
	}
}

猜你喜欢

转载自blog.csdn.net/qq_39368007/article/details/83758688