黑马程序员技术交流社区

标题: 静态(练习)数组元素大小值,排序 [打印本页]

作者: zhoubinjian    时间: 2016-3-24 17:12
标题: 静态(练习)数组元素大小值,排序
/*
静态的应用:
每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。
虽然可以通过建立ArryTool的对象使用这些工具方法,对数组进行操作。
但是发现了问题:
1.对象是用于封装数组的,可是ArryTool对象并未封装特有数据。
2.操作数据的每一个方法都没有用到ArryTool对象中的特有数据。
这里就考虑,让程序更严谨是不需要对象的。
可以将ArryTool中的方法都定义成static的,直接通过类名调用即可。

将方法都静态后,可以方便于使用,但是该类可以被其它的程序建立对象的。
为了更加严谨,强制让该类不能建立对象,可以通过构造函数私有化来完成。


*/
class ArryToolDemo
{
        public static void main(String[] args)
        {
                int[] arr={3,6,64,9,1,8};
                int max=ArryTool.getMax(arr);//将ArryTool中的方法用static定义后,用类名调用工具函数
                System.out.println("max="+max);

                int min=ArryTool.getMin(arr);
                System.out.println("min="+min);

                ArryTool.printArry(arr);
                ArryTool.selectMax(arr);
                ArryTool.printArry(arr);
                /*
                ArryTool c=new ArryTool();               
                int max=c.getMax(arr);
                System.out.println("max="+max);               
                int min=c.getMin(arr);
                System.out.println("min="+min);               
                c.printArry(arr);
                c.selectMax(arr);
                c.printArry(arr);
                */
        }
}
class ArryTool
{
       private ArryTool(){};//将构造函数私有化,防止对象建立
        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 selectMax(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 printArry(int[] arr)
        {
                System.out.print("[");
                for (int x=0;x<arr.length;x++)
                {
                        if (x!=arr.length-1)                       
                                System.out.print(arr[x]+",");
                        else
                                System.out.println(arr[x]+"]");
                }       
        }
        public static void swap(int[] arr,int a,int b)
        {       
                                        int temp=arr[b];
                                        arr[b]=arr[a];
                                        arr[a]=temp;       
        }
}








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2