黑马程序员面向对象06天1(static1)

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);
    }
}
原文地址:https://www.cnblogs.com/guwenren/p/2984889.html