工具类

来源:互联网 发布:我要投诉淘宝小二 编辑:程序博客网 时间:2024/05/16 17:18

每一个应用程序中都有共性的共性的功能,可以将这些功能进行抽取,独立封装。

工具类

class ArrayTool{    public 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];    }    public 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];    }    public void select(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);                }            }        }    }    public void swap(int[] arr,int a,int b)    {        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }    public 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]+"]");        }    }}
class ArrayToolDemo {    public static void main(String[] args)     {        int[] arr = {3,1,87,32,8};        ArryTool tool = new ArrayTool();        int max = tool.getMax(arr);        System.out.println("max="+max);        tool.printArray(arr);        tool.selectSort(arr);        tool.printArray(arr);    }}

虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。但是发现了问题:
1,ArrayTool对象是用于封装数据的,可是ArrayTool对象并没有封装特有数据。
2,操作数据的每一方法都没有用到ArrayTool对象中的数据。

这时就考虑,让程序更严谨,是不需要对象的。
可以将ArrayTool中的方法都定义成static的。直接通过类名调用即可。

优化后

class ArrayTool{    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];    }    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];    }    public static void select(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);                }            }        }    }    public static void swap(int[] arr,int a,int b)    {        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }    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]+"]");        }    }}
class ArrayToolDemo {    public static void main(String[] args)     {        int[] arr = {3,1,87,32,8};        int max = ArrayTool.getMax(arr);        System.out.println("max="+max);        /*        ArryTool tool = new ArrayTool(); // 建立对象没意义        int max = tool.getMax(arr);        System.out.println("max="+max);        tool.printArray(arr);        tool.selectSort(arr);        tool.printArray(arr);        */    }}

将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。

可以通过将构造函数私有化完成。

class ArrayTool{    private ArrayTool(){} //构造函数私有化后,不能随意建立对象    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];    }    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];    }    public static void select(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);                }            }        }    }    private void swap(int[] arr,int a,int b)    {        int temp = arr[a];        arr[a] = arr[b];        arr[b] = temp;    }    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]+"]");        }    }}
0 0