----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------
Java中的static关键字用于修饰静态成员变量。它可以修饰类中共享的数据。每一个应用程序都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。
比如定义一个工具类,类中有一些对数组操作的成员函数,如返回最大值,排序等。虽然可以通过建立工具类的对象使用这些工具方法,对数组进行操作,但有以下缺陷:
1,对象是用于封装数据的,可是工具类对象并未封装特有数据
2,操作数组的每一个方法都没有用到工具类对象中的特有数据
这时就可以考虑,让程序更严谨,不需要对象。可以将工具类中的方法都定义成静态(static)的,直接通过类名调用即可。
将方法都静态修饰后,可以方便使用,但是该类还是可以被其他程序建立对象,为了更为严谨,可以强制让该类不能建立对象,所以可以通过将构造函数私有化来实现。
接下来可以将该工具类的类文件发给其他人,他只要将该文件设置到classpath路径下,就可以使用该工具类。但是该类文件不可见,所以对方不清楚该类的使用方法,所以需要制作程序的说明书。java的说明书通过文档注释来完成。
下面我们来制作一份简易的ArrayTool类工具文档,该工具类提供以下功能
static void bubbleSort(int[] arr)给int数组进行冒泡排序。
static int getMax(int[] arr)获取一个整型数组中的最大值
static int getMin(int[] arr)获取一个整型数组中的最小值
static void printArray(int[] arr)用于打印数组中的元素。
static void selectSort(int[] arr) 给int数组进行选择排序。
/** 这是一个可以对数组进行操作的工具类,该类中提供了,获取最值,排序等功能。 @author Xuebin Zhou @version V1.1 */ public class ArrayTool { //将构造函数私有化,使该类不能创建对象。 /** 空参数构造函数。 */ private ArrayTool() {} /** 获取一个整型数组中的最大值 @param arr 接收一个int类型的数组。 @return 会返回该数组中的一个最大值。 */ public static int getMax(int[] arr) { int max = 0; for (int x = 1; x < arr.length; x++) { if (arr[x] > arr[max]) max = x; return arr[max]; } } /** 获取一个整型数组中的最小值 @param arr 接收一个int类型的数组。 @return 会返回该数组中的一个最小值。 */ public static int getMin(int[] arr) { int min = 0; for (int x = 1; x < arr.length; x++) { if (arr[x] < arr[min]) min = x; return arr[min]; } } /** 给int数组进行选择排序。 @param arr 接受一个int类型的数组。 */ public static void selectSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x+1; y < arr.length; y++) { if (arr[x] > arr[y]) { swap(arr, x, y); } } } } /** 给int数组进行冒泡排序。 @param arr 接收一个int类型的数组。 */ public static void bubbleSort(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = 0; y < arr.length - x - 1; y++) { if (arr[y] > arr[y+1]) { swap(arr, y, y+1); } } } } /** 给数组中的元素进行位置的置换。 @param arr 接受一个int类型的数组。 @param a 要置换的位置 @param b 要置换的位置 */ private static void swap(int[] arr, int a, int b) { int temp = arr[a]; arr[a] = arr[b]; arr[b] = temp; } /** 用于打印数组中的元素。打印形式是:[element_1, element_2, ...] @param arr 接收一个int类型的数组。 */ public static void printArray(int[] arr) { System.out.print("["); for (int x = 0; x < arr.length; x++) { if (x != arr.length - 1) System.out.println(arr[x] + ", "); else System.out.println(arr[x] + "]"); } } }
代码中的注释段如果要呈现在类使用说明文档上,需要被注释在/** */代码段中。该注释代码段内可以提供方法说明,参数说明,文档作者,版本信息等信息。我们将该段代码用下面的语句来编译,即可获得一份说明文档:
javadoc -d myhelp -author -version ArrayTool.java
此语句运行后,会在当前目录下生成一个myhelp文件夹,文件夹内会创建一些说明文档,即为我们想创建的类说明书,截图如下:
然后我们打开其中的索引页面,即index.html,则截图如下:
一个类中默认会有一个空参数的构造函数,这个默认的构造函数的权限和所属类一直。如果类被public修饰,那么默认的构造函数也带public修饰符。如果类没有被public修饰,那么默认的构造函数也没有public修饰符。默认构造函数的权限是随着类的变化而变化的。可以看到其中的静态方法成员。
使用该类时,直接用类名即可调用其方法。下面我们通过一个简单的示例来展示如何使用该自定义的类:
class ArrayToolDemo { public static void main(String[] args) { int[] arr = {23, 14, 67, 43, 29, 87, 125, 49, 43, 10}; int max = ArrayTool.getMax(arr); int min = ArrayTool.getMin(arr); ArrayTool.bubbleSort(arr); System.out.println("Max = " + max); System.out.println("Min = " + min); ArrayTool.printArray(arr); } }
先编译ArrayTool.java,然后编译ArrayToolDemo.java,然后运行,即可得出如下结果:
Max = 125 Min = 10 [10, 14, 23, 29, 43, 43, 49, 67, 87, 125]
通过这两个示例,我们已经能做出简单的帮助文档,以及可以使用别人制作的工具类来完成自己所要实现的功能了。
----------------------
ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------