/*
静态的应用:
每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。
虽然可以通过建立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;
}
}
|
|