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);
}
}