java中什么时候使用静态static,工具类的创建

来源:互联网 发布:惊艳的句子 知乎 编辑:程序博客网 时间:2024/04/29 21:17
/*什么时候使用静态? 要从两方面下手:因为静态修饰的内容有成员变量和函数什么时候定义静态的变量(类变量)呢?当对象中出现共享数据时,该数据被静态所修饰对象中的特有数据要定义成非静态存在于堆内存中 什么时候定义静态函数呢? 当功能内部没有访问到非静态数据(对象的特有数据)那么该功能可以定义成静态的*/ /*静态的应用: 每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装以便复用 虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作发现了问题:1,对象是用于封装数据的,可以是ArrayTool对象并未封装特有数据2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据 这时就考虑,让程序更严谨,是不需要对象的可以将ArrayTool中的方法都定义成static的。直接通过类名调用即可。 将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的为了更为严谨,强制让该类不能建立对象可以通过将构造函数私有化完成。 */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 selectSort(int[] arr)    {        for(int x=0;x<arr.length-1;x++)        {            for(int y=0;y<arr.length;y++)            {                if(arr[x]>arr[y])                {                    swap(arr,x,y);                }            }        }    }         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);                }            }        }    }         private 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.print(arr[x]+", ");            else                System.out.println(arr[x]+"]");        }    }}  --------------------------------------------------------class Demo{    public static void main(String[] args)    {        int[] arr = {3,4,1,8};         int max = getMax(arr);        System.out.println("max="+arr[max]);    }    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];    }     }---------------------------------------------------class Person{    String name;    public static void show()    {        System.out.println("haha");    }}  class{    public static void main(String[] args)    {        Person p = new Person();        p.show();        Person.show();    }}

0 0
原创粉丝点击