package java06;
/*
* 静态的应用。
* 每一个应用程序中都有共性的功能,
* 可以将这些功能进行抽取,独立封装。以便复用。
* 虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。
* 发现了问题:
* 1,对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
* 2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。
* 这时就考虑,让程序更严谨,是不需要对象的。
* 可以将ArrayTool中的方法都定义成static的。直接通过类名调用即可。
* 将方法都静态后,可以方便于使用,但是该类还是可以被其他程序建立对象的。
* 为了更为严谨,强制让该类不能建立对象。
* 可以通过将构造函数私有化完成。
* 接下来,将ArrayTool.class文件发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该工具类。
* 但是,很遗憾,该类中到底定义了多少个方法,对方去不清楚。因为该类并没有使用说明书。
* 开始制作程序的说明书。java的说明书通过文档注释来完成。
* 这是一个可以对数组进行操作的工具类,该类中提供了,获取最值,排序等功能。
*/
class ArrayTool {
/**
* 空参数构造函数。不能被实例话了
*/
private ArrayTool() {
}
/**
* 获取一个整形数组中的最大值。
*
* @param arrays接收一个int类型的数组
* 。
* @return 会返回一个该数组中最大值。
*/
public static int getMax(int[] arrays) {
int max = 0;
for (int i = 1; i < arrays.length; i++) {
if (arrays[max] < arrays[i])
max = i;
}
return arrays[max];
}
/**
* 获取一个整形数组中的最小值。
*
* @param arrays接收一个int类型的数组
* 。
* @return 会返回一个该数组中最小值。
*/
public static int getMin(int[] arrays) {
int max = 0;
for (int i = 1; i < arrays.length; i++) {
if (arrays[max] > arrays[i])
max = i;
}
return arrays[max];
}
/**
* 给int数组进行选择排序。
*
* @param arrays
* 接收一个int类型的数组。
*/
public static void OrderByAsc(int[] arrays) {
for (int i = 0; i < arrays.length; i++) {
for (int j = 0; j < arrays.length - 1; j++) {
if (arrays[j] > arrays[j + 1]) {
int value = arrays[j];
arrays[j] = arrays[j + 1];
arrays[j + 1] = value;
}
}
System.out.println(arrays[i]);
}
}
/**
* 用于打印数组中的元素。打印形式是:[elemet1, element2, ...]
* @param arrays 接收一个int类型的数组。
*/
public static void printArray(int[] arrays){
StringBuilder sb=new StringBuilder("[");
for(int i=0;i<arrays.length;i++){
if(i<(arrays.length-1)){
sb.append(arrays[i]).append(",");
}else{
sb.append(arrays[i]);
}
}
sb.append("]");
System.err.println(sb.toString());
}
}
/*
* 一个类中默认会有一个空参数的构造函数,
*这个默认的构造函数的权限和所属类一致。
*如果类被public修饰,那么默认的构造函数也带public修饰符。
*如果类没有被public修饰,那么默认的构造函数,也没有public修饰。
*默认构造构造函数的权限是随着的类的变化而变化的。
*/
public class Demo {
public static void main(String[] args) {
int[] arrays = new int[] { 1, 11, 5, 17, 9 };
// System.out.println(ArrayTool.getMax(arrays));
// System.out.println(ArrayTool.getMin(arrays));
//ArrayTool.OrderByAsc(arrays);
ArrayTool.printArray(arrays);
}
}