数组实用类Arrays和枚举类型Enum

一、数组使用类Arrays

1.在java.util包中,Arrays提供了一系列静态方法,帮助操作数组。以下是较常用的一些方法。
(1) equals方法,比较两个数组参数是否相同。
(2) fill方法,向数组中填充数据参数。
(3) binarySearch方法,查找数组中元素的值与给定数据相同的元素。
(4) sort方法,将数组按升序排列。
(5) copyOfRange方法,将数组的指定范围复制到一个新数组。
(6) toString方法,返回指定数组内容的字符串表示形式。
    代码示例如下:
/** * Arrays的一系列静态方法 */
import java.util.Arrays;
public class ArraysTest2{
    public static void main(String[] args){
        //基本数据类型、字符串
        String[] arr = new String[5];
        Arrays.fill(arr,0,3,"董帅");//s填充范围是0-2,不包含3
        for(String s : arr){
            System.out.println(s + ",");
        }
        System.out.println();
        //引用数据类型
        ArraysTest2[] arr2 = new ArraysTest2[5];
        Arrays.fill(arr2,2,4,new ArraysTest2());//填充范围是2-3,不包含4
        for(ArraysTest2 a : arr2){
            System.out.println(a + ",");
        }

        //查找数组中元素的值与给定数据相同的元素
        int[] arr3 = {2,6,5,63,2550,2346,34122};
        System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");//查找范围是0-2,返回的是数组下标
        Arrays.sort(arr3);//将数组升序排序
        System.out.println(Arrays.binarySearch(arr3,0,3,6) + "\n");
        for(int i : arr3){
            System.out.println(i);
        }

        int[] arr4 = {1,4,23,3,54,32,4645};
        int[] arr5 = Arrays.copyOf(arr4,5);//赋值到新数组,范围是0-4
        for(int i : arr5){
            System.out.print(i + ",");
        }
        System.out.println();
        int[] arr6 = Arrays.copyOfRange(arr4,2,5);//赋值到新数组,范围是2-4
        for(int i : arr6){
            System.out.print(i + ",");
        }
        System.out.println();

        System.out.print(Arrays.toString(arr4));//返回数组的字符串表示形式
    }
}

二、枚举类型Enum
枚举类型enum是在JDK5.0加入的类型,类型安全,使枚举数值定义更加紧凑有效。
1.遍历枚举类型

/** * 枚举类型enum */
public class EnumTest{
    public enum StudentGrade{
        A,B,C,D,E,F
    };
    public static void main(String[] args){
        System.out.println("学生平均成绩:" + StudentGrade.A);

        for(StudentGrade sg : StudentGrade.values()){//遍历枚举类型,values()方法返回了一个独立的StudentGrade实例构成的数组
            System.out.println("The Grade is:" + sg);
        }
        StudentGrade s = StudentGrade.valueOf("E");//以字符串的形式返回某一个元素的值。
        System.out.println("your grade is:" + s);
    }
}
2.在switch中使用枚举类型
/** * 枚举类型enum,在switch语句中使用 */
public class EnumSwitch{
    public enum Car{A,B,C,D,E,F,G,H};
    public static void main(String[] args){
        Car c = Car.G;
        switch(c){
            case A:
                System.out.println("360");
                break;
            case B:
                System.out.println("小米");
                break;
            case C:
                System.out.println("华为");
                break;
            case D:
                System.out.println("苹果");
                break;
            default:
                System.out.println("HTC");
                break;
        }
    }
}

三、几道练习题
(1)求二重循环所有元素的和

/** * 求二位数组所有元素的和 */
public class Task140_3{
    public static void main(String[] args){
        int[][] a = {{11,23,},{234,12,312,53},{423,53,123,65432}};
        int sum = 0;
        for(int i = 0;i <= a.length - 1;i++){
            for(int j = 0;j <= a[i].length - 1;j++){
                sum += a[i][j];
            }
        }
        System.out.println(sum);
    }
}
    (2) 判断一个单词是否在数组里面
/** *判断一个单词是否在数组里面 */
import java.util.Scanner;
import java.util.Arrays;
public class Task140_2{
    public static void main(String[] args){
        System.out.print("Please input a word:");
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        String[] str = {"dong","shuai","brilliant","awesome","shackboey","skydosh"};
        int b = Arrays.binarySearch(str,s);
        if(b >= 0){
            System.out.println("Here am I!");
        }else{
            System.out.println("what the hell!");
        }
    }
}
    (3) 随机输出一个字符串
/** * 随机输出字符串 */
import java.lang.Math;
public class Task140_4{
    public static void main(String[] args){
        String[] arr = {"dong","shuai","zangyan","mudi","wangchao","jiaru"};
        System.out.println(arr[2]);
        int i = (int)(Math.random() * arr.length);
        System.out.println(arr[i]);
    }
}
    (4)生成100个随机数,放到数组中,然后排序输出
/** * 生成100个随机数,放在数组中,然后排序输出 */
import java.util.*;
public class Task140_5{
    public static void main(String[] args){
        int[] arr = new int[100];
        for(int i = 0;i < 100;i++){
            Random rnd = new Random();
            arr[i] = (int)(rnd.nextInt(Integer.MAX_VALUE) + 1);
            System.out.print(arr[i] + ",");
        }
        System.out.println();
        Arrays.sort(arr);
        for(int j = 0;j < 100;j++){
            System.out.print(arr[j] + " ");
        }
    }
}
    (5) 统计字符串中的英文字母、空格、数字和其它字符的个数。
/** * 统计字符串中各类型字符的个数 */
import java.util.*;
import java.io.*;
//import java.io.InputStream;
public class Task140_6{
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("please input character string:");
        String s = br.readLine();
        //Task140_6 t = new Task140_6();
        countSum(s);
    }
    public static void countSum(String s){
        int alphabet = 0;
        int blankspace = 0;
        int number = 0;
        int other = 0;
        for(int i = 0;i < s.length();i++){
            char c = s.charAt(i);
            if(c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z') alphabet++;
            else if(c == ' ') blankspace++;
            else if(c >= '0' && c <= '9') number++;
            else other++;
        }
        System.out.println("字母个数为:" + alphabet);
        System.out.println("空格个数为:" + blankspace);
        System.out.println("数字个数为:" + number);
        System.out.println("其他字符个数为:" + other);
    }
}

你可能感兴趣的:(java,数组,枚举类型)