文章目录
Java面向对象编程(进阶玩法)
一、定义工具类
1)在实际开发中,经常会遇到一些数组使用的工具类,以下我将编写一个数组的工具类:ArraysUtils
因为在数组对象直接输出的时候是输出对象的地址的,而项目中很多地方都需要返回数组的内容,所以我们需要去定义一个工具类,去返回我们想要的结果
1. 首先我们创建一个测试类:
public class Test {
public static void main(String[] args) {
//在这里我们定义了一个有参的数组
int[] arr = {10, 20, 30,40,50};
//使用ArrayUtils工具类的toString方法去输出数组
System.out.println(ArrayUtils.toString(arr));
//使用ArrayUtils工具类的getAverage方法获取这个数组的平均值
System.out.println(ArrayUtils.getAverage(arr));
//在这里我们定义了数组值为null的arr1
int[] arr1 = null;
//使用ArrayUtils工具类的toString方法去输出null数组
System.out.println(ArrayUtils.toString(arr1));
//使用ArrayUtils工具类的getAverage方法是否能够处理null值
System.out.println(ArrayUtils.getAverage(arr1));
//在这里我们定义了一个无参的数组
int[] arr2 = {};
//使用ArrayUtils工具类的toString方法去输出无参数组
System.out.println(ArrayUtils.toString(arr2));
//使用ArrayUtils工具类的getAverage方法处理一个无参数组
System.out.println(ArrayUtils.getAverage(arr2));
}
}
现在我们还没有写ArrayUtils
工具类,所以会报错,如下:
2. 现在我们需要创建一个ArrayUtils
工具类:
选中
ArrayUtils
区域使用快捷键Alt+Enter创建一个ArrayUtils
工具类
可以看见我们Test.java测试类还是报错:
这时候我们需要去实现toString和getAverage类
先确定一个目标,我现在想要这个测试类输出的内容是:
2.1 首先我们定义一个无参构造器(把它私有化):
构造器的设置是让实例化的对象有默认的参数,这里我们定义的是无参构造
private ArrayUtils() {}
2.2 然后定义一个String
类型静态方法去重写我们的toString
方法,返回我们的数组,代码及解释如下:
静态方法(static method)是属于类本身而不是类的实例的方法。这意味着静态方法可以在没有创建类的对象实例的情况下被调用
//注意:这是一个方法,将这个方法添加到你的ArrayUtils工具类中
//括号里是获取一个名为arr(使用这个方法可以不用这个名,但需要同样的类型)的int[]数组类型。
public static String toString(int[] arr) {
//如果arr为null,则返回一个null
if (arr == null) {
return null;
}
//如果arr数组里没有内容,则返回字符串[]
if (arr.length == 0) {
return "[]";
}
//否则,使用java自有的StringBuilder用来创建可变的字符串,与 String 类不同,StringBuilder 允许你在创建后修改字符串
StringBuilder sb = new StringBuilder();
//向 StringBuilder 添加了一个开方括号 [,标志着数组表示的开始。
sb.append("[");
//使用 for 循环遍历数组 arr 的每个元素。
for (int i = 0; i < arr.length; i++) {
//将当前数组元素添加到 StringBuilder。
sb.append(arr[i]);
//检查当前元素是否不是数组中的最后一个。
if (i < arr.length - 1) {
//如果不是最后一个元素,添加一个逗号和空格以进行分隔。
sb.append(", ");
}
}
//循环之后,添加了一个闭方括号 ],标志着数组表示的结束。
sb.append("]");
//最后,调用 sb.toString() 将 StringBuilder 的内容转换成 String,并从方法中返回这个字符串。
return sb.toString();
}
如图:
可以看见toString
方法被重写了参数类型现在可以用了:
2.3 继续定义一个double
类型的getAverage
静态方法,去返回我们数组的平均值,代码及解释如下:
//方法需要实现:计算并返回一个整数数组的平均值
//公开的静态方法 getAverage,它接受一个整数数组 arr 作为参数,并返回一个 double 类型的值。
public static double getAverage(int[] arr) {
//在计算平均值之前,检查传入的数组是否为 null 或长度为零,如果是则返回0,因为在这种情况下无法计算平均值。
if (arr == null || arr.length == 0) {
return 0;
}
//这个变量用于存储数组中所有值的总和。
double sum = 0;
// 循环遍历数组 arr 中的每个元素到value变量中,每次循环都将 value 的值加到 sum 上
for (int value : arr) {
sum += value;
}
//在所有元素被累加到 sum 之后,除以数组的长度 arr.length ,计算结果以 double 类型返回
return sum / arr.length;
}
如图:
3. 运行代码
可以看见我们的测试类(Test.java)已经可以运行了,如图:
目前为止,我们已经实现了测试类(Test.java)中的工具类(ArrayUtils.java)以及其方法(toString、getAverage)。
现在我们右击运行我们的测试类
注意这里要安装并配置jdk环境才能够运行
得到的结果如下:
至此我们的定义工具类讲解就结束了,如果有不好的地方请评论告知!!感谢支持!