Java基础-Arrays

169 阅读3分钟
package Java基础04_一维数组;

import java.util.Arrays;
/*
 * Array:数组的意思
 * Arrays:是Java中的一个内置类,专门用于处理数组的操作,排序,查找,复制,填充,匹配为字符串
 */
public class ArraysDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String[] array= {"宋江","李贵","武松","林冲","孙二娘","鲁智深"};
		int[] array2= {2,3,15,63,84,6,24,84,7,68,9,5};
		int[] array3= {2,3,15,63,84,6,24,84,7,68,9,5};
	  //对数组进行排序   升序
		System.out.println("========对数组进行排序========");
		System.out.println("数组的长度:即:array.length:"+array.length);//6
		Arrays.sort(array);//一般不对字符串进行排序.
		for(int i=0;i<array.length;i++) {
			System.out.print(array[i]+",");//字符排序按照ASCII码去排序的:孙二娘,宋江,李贵,林冲,武松,鲁智深,
		}
		System.out.println();
		Arrays.sort(array2);
		for(int i=0;i<array2.length;i++) {
			System.out.print(array2[i]+",");//一般对基本类进行排序:2,3,5,6,7,9,15,24,63,68,84,84,
		}
		System.out.println();
		System.out.println("========对数组进行复制========");
       /*copyof(int[] original,int newLength)
        * 第一个参数original:是要复制的数组
        * 第二个参数newLength:需要复制的长度(指定复制的新数组的长度)
        */
		int[] array_2=Arrays.copyOf(array2, array2.length);
		for(int i=0;i<array_2.length;i++) {
			System.out.print(array_2[i]+",");//2,3,5,6,7,9,15,24,63,68,84,84,
		}
		System.out.println();
		System.out.println("--------------------------------------");
        /*
         * copyofRange(int original,int from,int to)
         * 将指定数组的指定范围复制到一个新数组
         * 第一个参数:需要复制的数组
         * 第二个参数:需要复制的数组的起始位置,用索引值来表示
         * 第三个参数:需要复制的数组的结束位置,用索引值来表示		
         */
		int[] array_3=Arrays.copyOfRange(array3, 1, 3);
		for(int i=0;i<array_3.length;i++) {
			System.out.print(array_3[i]+",");//3,15,
		}
		System.out.println();
		System.out.println("========数组的比较========");
		/*
		 * 字符串就是字符的数组
		 * equals(int[] a,int[] a2)
		 * 如果两个指定的int 型数组彼此相等,则返回true
		 * 底层原理:实际上先比较的是两个数组的地址值,如果不相等,去判断长度,如果长度相等才会一个一个元素进行比较
		 * 
		 */
		boolean flag=Arrays.equals(array2, array3);//不相等
		System.out.println(flag);//false
		System.out.println("========数组的填充========");
		/*
		 * fill(int[] a,int val)
		 *    将指定的int 值分配给指定int型数组的每个元素
		 */
		Arrays.fill(array3, 99);
		for(int i=0;i<array3.length;i++) {
			System.out.print(array3[i]);//999999999999999999999999
		}
		System.out.println();
		System.out.println("--------------------------------------");
		/*
		 * fill(int[] a ,int fromIndex,int toIndex,int val)
		 *    将指定的int 值分配给指定int型数组指定范围中的每个元素
		 */
		Arrays.fill(array3, 0,4,22);
		for(int i=0;i<array3.length;i++) {
			System.out.print(array3[i]+",");//22,22,22,22,99,99,99,99,99,99,99,99,
		}
		System.out.println();
		
		System.out.println("========数组的查找========");
		/*
		 * binarySerch(int[] a,int key)
		 * 使用二分搜索法来搜索指定的int 型数组,以获得指定的值
		 */
		int i=Arrays.binarySearch(array2, 15);//6是他的索引值,如果该元素不在这个数组,则返回一个负数
		System.out.println(i);//6
		System.out.println("--------------------------------------");
		/*
		 * binarySearch(int[] a,int fromIndex,int toIndex,int key)
		 * 使用二分查找法来搜索指定的int型数组的范围,以获得指定的值
		 */
		int j=Arrays.binarySearch(array2, 0,7,6);
		System.out.println(j);//3

	}

}