工具类

工具类的类名要见名知意, 比如要写一个类专门进行数学计算, 那么这个类的类名可以取为 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 @   有空  阅读(34)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示