静态应用---工具类
虽然可以同拖建立ArryTool的对象使用这些工具方法,对数组进行操作,发现了问题。
1;对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2;操作数组的没一个方法都没有用到ArryTool对象的特有数据。
这是就考虑,让程序更严谨,是不需要创建对象的。
可以将ArryTool中的方法都定义称static的,直接通过类名调用即可。
例:
class demo
{
public static void main(String[] args)
{
int [] arr = {3,4,1,8};
/*
ArryTool tool = new ArryTool();
int max = tool.getMax (arr);
System.out.println(max);
ArryTool tool1 = new ArryTool();
int min = tool1.getMin (arr);
System.out.println(min);
tool.printArry(arr);
tool.bubbleSort(arr);
tool.printArry(arr);
tool.selectsort(arr);
tool.printArry(arr);
*/
int max = ArryTool.getMax(arr);
System.out.println(max);
}
}
/*
静态的应用
每一个应用程序中都有共性的功能。
可以将这些功能进行抽取,独立封装。
以便复用
虽然可以同拖建立ArryTool的对象使用这些工具方法,对数组进行操作,发现了问题。
1;对象是用于封装数据的,可是ArrayTool对象并未封装特有数据。
2;操作数组的没一个方法都没有用到ArryTool对象的特有数据。
这是就考虑,让程序更严谨,是不需要创建对象的。
可以将ArryTool中的方法都定义称static的,直接通过类名调用即可。
将方法都静态后,可以方便与使用,但是因为默认有一个构造函数,该类还是可以被其他程序
建立对象的。
可以将默认构造函数私有化,使别的程序无法创建对象。
如果类被public修饰,name默认的构造函数也带有public修饰符。
如果类没有被public修饰,那么默认的构造函数也没有public修饰。
默认构造函数的权限是随着类的变化而变化的。
默认的构造函数时不显示的,看不到的那个函数。如果写了一个空参数的构造函数则这个空参数的构造函数是自定义构造函数
*/
/**
文档说明书
这是一个对数组进行操作的工具类,该类中提供了,获取最值,排序功能
@author 张三丰
@version v1.0
*/
public class ArryTool
{
/**
空参数构造函数
*/
private ArryTool (){}
/**
获取一个整型数组中的最大值,
@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);
}
}
}
}
/**
给一个int类型数组中的元素进行位置置换
@param arr 接受一个int 类型的数组。
@param a 要置换的位置
@param b 要置换的位置
*/
private static void swap (int [] arr,int a, int b)
{//私有化,因为该函数只在该类内使用。不需要暴露在外面。
int temp = arr[a];
arr[a] = arr[b];
arr[b] = temp;
}
/**
用于打印数组中的元素,打印形式是:[elemet1.elemet2,..........]
*/
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]+"]");
}
}
}