工具类

工具类的类名要见名知意, 比如要写一个类专门进行数学计算, 那么这个类的类名可以取为 Math, 如果要写一个类专门操作数组, 那么这个类的类名可以取为 ArrUtil.

不要创建工具类的对象, 因此需要私有化工具类的构造方法. 工具类不是用来创建一类事物的, 创建它的对象没有任何意义. 例如对于 Javabean 类 Student, 描述了学生, 创建这个类的对象即学生是有实际意义的, 创建一个 Student 类的对象就表示一个学生.

工具类的方法都定义为静态的, 方便调用. 例如:

public class ArrUtil {
    private ArrUtil(){}

    public static int getMax(...){...} // 求最大值
    public static int getMin(...){...} // 求最小值
    public static int getSum(...){...} // 求和
    public static int getAvg(...){...} // 求平均值
}

练习:
定义数组工具类
需求: 在实际开发中, 经常会遇到一些数组使用的工具类.
请按照如下要求编写一个数组的工具类: ArrayUtil
提供一个工具类方法 printArr, 用于返回整数数组的内容. 返回的字符串格式如: [10, 20, 50, 34, 100] (只考虑整数数组, 且只考虑一维数组)
提供一个工具类方法 getAerage, 用于返回平均分 (只考虑浮点型数组, 且只考虑一维数组)
定义一个测试类 TestDemo, 调用该工具类的工具方法, 并返回结果.

工具类:

public class ArrayUtil {
    // 私有化构造方法, 不让外界创建其对象
    private ArrayUtil() {
    }

    // 其他方法定义为静态的, 方便调用

    // 拼接字符串并返回, 只考虑整数数组, 只考虑一维数组
    public static String printArr(int[] arr) {
        StringBuilder sb = new StringBuilder();
        sb.append("[");
        for (int i = 0; i < arr.length; i++) {
            if (i == arr.length - 1) {
                sb.append(arr[i]).append("]");
            } else {
                sb.append(arr[i]).append(", ");
            }
        }
        return sb.toString();
    }

    // 返回平均值, 只考虑浮点型数组, 只考虑一维数组
    public static double getAverage(double[] arr) {
        double sum = 0;
        for (int i = 0; i < arr.length; i++) {
            sum += arr[i];
        }
        double average = sum / arr.length;
        return average;
    }
}

测试类:

public class TestDemo {
    public static void main(String[] args) {
        // 测试工具类中的两个方法是否正确
        int[] arr1 = { 1, 2, 3, 4, 5 };

        String str = ArrayUtil.printArr(arr1);
        System.out.println(str);

        double[] arr2 = { 1.1, 2.2, 3.3, 4.4, 5.5 };
        double average = ArrayUtil.getAverage(arr2);
        System.out.println(average);
    }
}

执行结果:

[1, 2, 3, 4, 5]
3.3

练习:
定义学生工具类
需求: 定义一个集合, 用于存储 3 个学生对象.
学生类的属性为: name, age, gender.
定义一个工具类, 用于获取集合中最大学生的年龄.

Javabean 类:

public class Student {
    private String name;
    private int age;
    private String gender;

    public Student() {
    }

    public Student(String name, int age, String gender) {
        this.name = name;
        this.age = age;
        this.gender = gender;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    /**
     * 获取
     * @return gender
     */
    public String getGender() {
        return gender;
    }

    /**
     * 设置
     * @param gender
     */
    public void setGender(String gender) {
        this.gender = gender;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + ", gender = " + gender + "}";
    }
}

工具类:

import java.util.ArrayList;

public class StudentUtil {
    // 私有化构造方法
    private StudentUtil() {
    }

    // 静态方法, 用于获取集合中最大学生的年龄.
    public static int getMaxAge(ArrayList<Student> list) {
        int max = list.get(0).getAge();
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            int currentAge = stu.getAge();
            max = Math.max(max, currentAge);
        }
        return max;
    }
}

测试类:

import java.util.ArrayList;

public class Test {
    public static void main(String[] args) {
        // 创建一个集合用来存储学生对象
        ArrayList<Student> list = new ArrayList<>();

        // 创建三个学生对象
        Student stu1 = new Student("zhangsan", 23, "男");
        Student stu2 = new Student("lisi", 24, "女");
        Student stu3 = new Student("wangwu", 25, "男");

        // 把学生对象添加到集合中
        list.add(stu1);
        list.add(stu2);
        list.add(stu3);

        // 调用工具类的方法
        int maxAge = StudentUtil.getMaxAge(list);

        System.out.println(maxAge);
    }
}

执行结果:

25
posted @ 2024-09-07 18:25  有空  阅读(65)  评论(0)    收藏  举报