/*
什么时候使用静态?
要从两反面入手
静态修饰的内容有成员和函数
什么时候定义静态变量(类变量)和函数
当对象中出现共享数据(数值,name等是属性)时,该数据被静态所修饰。
对象中的特有数据要定义成非静态,存在于堆内存中。
什么时候定义静态函数?
当功能内部没有访问到非静态数据(即对象的特有数据)时,
那么该功能可以定义为静态的
*/
/*
静态的应用
每个应用程序中都有共性的功能,
可以将这些功能进行抽取,独立封装,以便复用。
虽然可以通过建立ArrayTool的建立使用这些工具方法,对数组进行操作。
1,对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。
3,这时就要考虑,让程序更严谨,是不需要对象的。可以将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=x+1;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]+"]");
}
}
}
|
|