/*
静态是使用
每一个应用中都有共性的功能
可以将这些共性的功能抽取出来。进行封装
建立一个工具类
发现问题
1.对象是用于封装特有数据的。可是ArrayTool工具类中并未封装特有数据
2.操作数组的每一个方法都没有用到类中的特有数据
这时就考虑让,让程序更严谨,是不需要对象的
可以将ArrayTool中的函数定义为static的,直接通过类名调用即可
将方法都静态后,可以方便与使用,但是还是可以被别的类建立对象的
为了更严谨,可以强制让该类不能建立对象
把该类的构造函数私有化,就可以让别的程序无法建立该类对象
*/
//建立工具类
class ArrayTool {
//把该类构造函数私有化
private ArrayTool(){}
//定义一个求取最大值的函数
public static int getMax(int[] arr) {
int max = 0;
for(int i = 1; i < arr.length; i++) {
if(arr[max] < arr[i]) {
max = i;
}
}
return arr[max];
}
//求取最小值
public static int getMin(int[] arr) {
int min = 0;
for(int i = 1; i < arr.length; i++) {
if(arr[min] > arr[i]) {
min = i;
}
}
return arr[min];
}
//数组排序 从小到大
public static void selectSort(int[] arr) {
for(int i = 0; i < arr.length - 1; i++) {
for(int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
sort(arr, i, j);
}
}
}
}
//数组排序 从大到小
public static void bubbleSort(int[] arr) {
for(int i = 0; i < arr.length; i++) {
for(int j = 0; j < arr.length - i - 1; j++) {
if(arr[j] < arr[j + 1]) {
sort(arr, j, j + 1);
}
}
}
}
//数据交换
private static void sort(int[] arr, int i, int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
//打印输出数组
public static void printArray(int[] arr) {
System.out.print(" [ ");
for(int i = 0; i < arr.length; i++) {
if(i != arr.length - 1) {
System.out.print(arr[i] + " , ");
} else {
System.out.println(arr[i] + " ] ");
}
}
}
}
//建立一个测试类
class ArrayToolTest {
public static void main(String[] args) {
int[] arr = {3,4,6,1,7,9,8};
int a = ArrayTool.getMax(arr);
p("最大值是:" + a);
int b = ArrayTool.getMin(arr);
p("最小值是:" + b);
//数组排序 排序前
ArrayTool.printArray(arr);
//排序 从小到大
ArrayTool.selectSort(arr);
//排序后
ArrayTool.printArray(arr);
//排序 从大到小
ArrayTool.bubbleSort(arr);
//排序后
ArrayTool.printArray(arr);
}
//建立一个特殊函数。可以用起代替输出语句
public static void p(Object obj) {
System.out.println(obj);
}
} |
|