package java06; /* * 静态的应用。 * 每一个应用程序中都有共性的功能, * 可以将这些功能进行抽取,独立封装。以便复用。 * 虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。 * 发现了问题: * 1,对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。 * 2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。 * 这时就考虑,让程序更严谨,是不需要对象的。 * 可以将ArrayTool中的方法都定义成static的。直接通过类名调用即可。 * 将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。 * 为了更为严谨,强制让该类不能建立对象。 * 可以通过将构造函数私有化完成。 * 接下来,将ArrayTool.class文件发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该工具类。 * 但是,很遗憾,该类中到底定义了多少个方法,对方去不清楚。因为该类并没有使用说明书。 * 开始制作程序的说明书。java的说明书通过文档注释来完成。 * 这是一个可以对数组进行操作的工具类,该类中提供了,获取最值,排序等功能。 */ class ArrayTool { /** * 空参数构造函数。不能被实例话了 */ private ArrayTool() { } /** * 获取一个整形数组中的最大值。 * * @param arrays接收一个int类型的数组 * 。 * @return 会返回一个该数组中最大值。 */ public static int getMax(int[] arrays) { int max = 0; for (int i = 1; i < arrays.length; i++) { if (arrays[max] < arrays[i]) max = i; } return arrays[max]; } /** * 获取一个整形数组中的最小值。 * * @param arrays接收一个int类型的数组 * 。 * @return 会返回一个该数组中最小值。 */ public static int getMin(int[] arrays) { int max = 0; for (int i = 1; i < arrays.length; i++) { if (arrays[max] > arrays[i]) max = i; } return arrays[max]; } /** * 给int数组进行选择排序。 * * @param arrays * 接收一个int类型的数组。 */ public static void OrderByAsc(int[] arrays) { for (int i = 0; i < arrays.length; i++) { for (int j = 0; j < arrays.length - 1; j++) { if (arrays[j] > arrays[j + 1]) { int value = arrays[j]; arrays[j] = arrays[j + 1]; arrays[j + 1] = value; } } System.out.println(arrays[i]); } } /** * 用于打印数组中的元素。打印形式是:[elemet1, element2, ...] * @param arrays 接收一个int类型的数组。 */ public static void printArray(int[] arrays){ StringBuilder sb=new StringBuilder("["); for(int i=0;i<arrays.length;i++){ if(i<(arrays.length-1)){ sb.append(arrays[i]).append(","); }else{ sb.append(arrays[i]); } } sb.append("]"); System.err.println(sb.toString()); } } /* * 一个类中默认会有一个空参数的构造函数, *这个默认的构造函数的权限和所属类一致。 *如果类被public修饰,那么默认的构造函数也带public修饰符。 *如果类没有被public修饰,那么默认的构造函数,也没有public修饰。 *默认构造构造函数的权限是随着的类的变化而变化的。 */ public class Demo { public static void main(String[] args) { int[] arrays = new int[] { 1, 11, 5, 17, 9 }; // System.out.println(ArrayTool.getMax(arrays)); // System.out.println(ArrayTool.getMin(arrays)); //ArrayTool.OrderByAsc(arrays); ArrayTool.printArray(arrays); } }