JavaDay06
这个几天正在学习java的面向对象中的静态。
静态的应用:
应用情况:
每一个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用
在这里建立一个java的ArrayTool的类,代码如下
/**
这是一个可以对数据进行操作的工具类,该类中提供了获取最值,排序等功能。
@author SOSODefficult
@version v1.1
*/
public class ArrayTool
{
/**
空参数构造函数
*/
private ArrayTool() {}
/**
获取一个整形数组中的最大值。
@param arr 接收一个int类型的数据。
@return 返回一个数组中最大值。
*/
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];
}
/**
获取一个整形数组中的最小值。
@param arr 接收一个int类型的数据。
@return 返回一个数组中最小值。
*/
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];
}
/**
给int数组进行选择排序。
@param arr 接收一个int类型的数据。
*/
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);
}
}
}
}
/**
给int数组进行冒泡排序。
@param arr 接收一个int类型的数据。
*/
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);
}
}
}
}
/**
给数组中元素进行位置的置换。
@param arr 接收一个int类型的数据。
@param a 要置换的位置
@param b 要置换的位置
*/
private public static void swap(int[] arr,int a,int b)
{
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
/**
用于打印数组中的元素。打印形式是:[element1,element2, ...]
*/
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.print(arr[x]+"]");
}
System.out.println();
}
}
虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作
发现了问题:
1,对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2,操作数据的每一个方法都没有用到ArrayTool对象中特有的数据。
这时就考虑,为了让程序更严谨,是不需要对象的。
可以将ArrayTool中的方法都定义为static的,直接用过类名调用即可。
将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。为了更为严谨,强制让该类不能建立对象。可以通过将构造函数私有化完成。
接下来,将ArrayTool.class文件发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该类文件(设置的方式是在cmd中敲写 set classpath=.;(路径))
但是将文件传送给别人的时候并不知道在类中到底定义了多少个方法,对方法不清楚,因为该类并没有说明书。所以就需要制作说明书。java的说明书通过文档注释来完成 。格式是:/ ** (说明文档)*/
接下来就是新建一个主类来使用这个ArrayTool类
class ArrayToolDemo
{
public static void main(String[] args)
{
int [] arr = {3,1,2,4,54,65,7};
int max = ArrayTool.getMax(arr);
System.out.println("max="+max);
/*
ArrayTool tool = new ArrayTool();
int max = tool.getMax(arr);
System.out.println("max="+max);
int min = tool.getMin(arr);
System.out.println("min="+min);
tool.printArray(arr);
tool.selectSort(arr);
tool.printArray(arr);
*/
}
}
这样就可以使用工具类了,但是要注意,工具类一定要先编译,这样才可以使用。