案例1:对数组操作,获取最大值。
思路:
1,一组数,要获取最大的,比较。
2,怎么比较?按个比较。要获取数组中的每一个数据都要比较。
3,比较完,记下来比较大的数据,并用这个较大的数据和下一个数据比较。
不断记录较大的值。
4,如果所有的数据都比较完,那么最后记录的较大值就是最大值。
步骤:
1,需要一个类。
2,这个类需要独立运行,必须有main方法。
3,有一个数组。
4,每一次较大的数据都有可能不同。变量。
5,用数组的数据都获取出来。为了比较。遍历。
6,在遍历过程中,需要比较,判断。
7,每满足一次判断条件,就用变量记录较大的值。变量存储。
*/
//1,需要一个类。
class ArrayDemo
{
//2,这个类需要独立运行,必须有main方法。
public static void main(String[] args)
{
//3,有一个数组。
int[] arr = {23,17,88,42};
//4,每一次较大的数据都有可能不同。变量。
int maxValue = arr[0];//初始化为了数组中的任意一个元素。
//5,用数组的数据都获取出来。为了比较。遍历。for while
for(int i = 1; i < arr.length; i++)
{
//6,在遍历过程中,需要比较,判断。if
//7,每满足一次判断条件,就用变量记录较大的值。变量存储。
if(arr[i] > maxValue)
{
maxValue = arr[i];//只要遍历到的元素大于了maxValue中记录的较大的值,就用maxValue将该更大的值记录下来。
}
}
//8,一旦遍历结束,maxValue中存储的就是该数组的最大值。
// 为了显示出最大值。告诉使用者。输出语句。
System.out.println("arr最大值:"+maxValue);
}
}
/*
int[] arr2 = {34,56,99,10};
案例2:又来了一个数组。还要获取最大值。复制代码并改变量名,怂!
既然代码不变,为什么不提高这段代码的重复使用呢?传说中 复用性。
怎么提高复用?将这部分代码变成一个整体,并给这个整体起个名字(目的为了便于使用这个整体)。
Java中代码变成一个整体,通过函数体现的。所以函数就是一个类中的功能。
*/
class ArrayDemo2
{
public static void main(String[] args)
{
int[] arr = {34,56,99,10};
//获取最大值。需要一个功能。
int maxValue = getMaxValue(arr);
System.out.println("maxValue:"+maxValue);
int[] arr2 = {23,17,88,42};
int maxValue2 = getMaxValue(arr2);
System.out.println("maxValue2:"+maxValue2);
}
//需要getMaxValue功能,而这个功能目前是没有的。所以要自定义功能。提高了复用性。
public static int getMaxValue(int[] arr)
{
int maxValue = arr[0];//初始化为了数组中的任意一个元素。
//1,用数组的数据都获取出来。为了比较。遍历。for while
for(int i = 1; i < arr.length; i++)
{
//2,在遍历过程中,需要比较,判断。if
//3,每满足一次判断条件,就用变量记录较大的值。变量存储。
if(arr[i] > maxValue)
{
maxValue = arr[i];//只要遍历到的元素大于了maxValue中记录的较大的值,就用maxValue将该更大的值记录下来。
}
}
//4,一旦遍历结束,maxValue中存储的就是该数组的最大值。
//5,将该值返回。不要打印,因为不是该功能的职责。
return maxValue;
}
}
/*
案例3:继续升级,很多的类中都有数组,都需要获取其最值。
怎么办?不要复制。
将所需的功能,封装到指定的类中。
*/
class ArrayDemo3
{
public static void main(String[] args)
{
int[] arr = {43,12,56,89};
//想要使用ArrayTool中的功能。需要先建立ArrayTool这个类应用程序的对象。通过new完成。
ArrayTool tool = new ArrayTool();
int maxValue = tool.getMaxValue(arr);//通过tool这个对象调用它的获取最大值的功能。
System.out.println("maxvalue:"+maxValue);
//Arrays.sort(arr);
//获取最小值。
int minValue = tool.getMinValue(arr);
System.out.println("min?Value:"+minValue);
}
}
/*
将操作的最大值功能单独封装到一个类中。
这样使用这个功能只要找到功能所属的类就可以了。
ArrayTool tool = new ArrayTool();//这个就是对象。
int maxValue = tool.getMaxValue(arr);
所有的功能都在对象中。只要找到了对象,就可以使用这些功能。而不需要关注功能的细节。
*/
class ArrayTool
{
//获取最大值。
public /*static*/ int getMaxValue(int[] arr)
{
int maxValue = arr[0];
for(int i = 1; i < arr.length; i++)
{
if(arr[i] > maxValue)
{
maxValue = arr[i];
}
}
return maxValue;
}
//获取最小值。
public /*static*/ int getMinValue(int[] arr)
{
//code...
return 0;//仅为编译通过。
}
//二分查找。折半。
public /*static*/ int binarySearch(int[] arr,int key)
{
return 0;
}
}
/*
之前是面向过程:就是不断的使用函数。
现在将所有的功能进行封装。面对的是封装了功能的实体(对象),面向对象。
面向对象基于面向过程。将过程进行对象的封装。
只要找到了对象,就可以使用对象中的功能。 |
|