工具类
工具类的类名要见名知意, 比如要写一个类专门进行数学计算, 那么这个类的类名可以取为 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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术