A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

案例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;
        }

}

/*
之前是面向过程:就是不断的使用函数。
现在将所有的功能进行封装。面对的是封装了功能的实体(对象),面向对象。

面向对象基于面向过程。将过程进行对象的封装。

只要找到了对象,就可以使用对象中的功能。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马