今天看了一些java的学习视频,然后根据视频中老师讲解的方法做了一些整理。
设计方法工具
/*
每一个应用程序中都有共性的功能,
可以将这些功能进行抽取,独立封装,
以便于复用。
虽然可以通过建立ArrayTool的对象使用这些工具方法,对数组进行操作。
发现了问题:
1,对象时用于封装数据的,课时ArrayTool对象并为封装特有数据。
2,操作数组的每一个方法都没有用到ArrayTool对象中的特有数据。
这时就考虑,让程序更严谨,是不需要对象的,
可以将ArrayTool中的方法都应以成static的。直接通过类名调用即可。
将方法都静态后,可以方便于使用,但是该类还是可以被其它程序建立对象的,
为了更为严谨,强制该类不能建立对象,
可以通过将构造函数私有化完成。
工具类中通常定义的是静态的方法
接下来,将ArrayTool.class文件发送给其他人,其他人只要将该文件设置到classpath路径下,就可以使用该工具类。
但是,很遗憾,该类中到底定义了多少个方法,对方法不清楚,因为该类并没有使用说明书。
开始制作程序的说明书,java的说明书通过文档注释来完成
/** 通常是对类的描述信息
这是一个可以对数组进行操作的工具类,该类中提供了,获取最值,排序等功能
@author:小七
@version:V1.1
*/
public class ArrayTool
{
/**
空参数构造函数。
*/
//外界想使用我的工具类,就只能类名调用,想创建对象是不可能的,
//避免了堆内存中出现一些莫名其妙的对象(程序优化可以引用)
private ArrayTool(){}
//比较最大值
//public static int getMax(int[] arr) 加上静态
//凡是public的修饰符的功能,都有文档注释描述,因为都可以被文档注释工具所提取
/**
获取一个整形数组中的最大值。
@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];
}
//比较最小值
//public static int getMin(int[] arr) 加上静态
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) 加上静态
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 bubbletSort(int[] arr) 加上静态
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);
}
}
}
}
//元素交换位置
//public void swap(int[] arr,int a,int b) 加上静态
private static void swap(int[] arr,int a,int b) //因为此函数没有提供数据,可以将此方法私有化
{
int temp = arr[a];
arr[a] = arr[b];
arr[b]= temp;
}
//打印数组
//public void printArray(int[] arr)加上静态
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]+"]");
}
}
}
/*
class Test1
{
public static void main(String[] args)
{
int[] arr = {3,5,6,7,8,0,9};
int max = getMax(arr);
System.out.println("max="+max);
}
public static int getMax(int[] arr)
{
int max = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[max])
max = arr[x];
}
return arr[max];
}
}
class Test2
{
public static int getMax(int[] arr)
{
int max = 0;
for(int x=1; x<arr.length; x++)
{
if(arr[x]>arr[max])
max = arr[x];
}
return arr[max];
}
}
*/
调用方法:
class ArrayToolDemo
{
public static void main(String[] args)
{
int[] arr = {3,23,5,7,0,9,12};
//加上静态后,直接用下面方法来调用
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);
}
}