• 方法与数组


    一、方法

      1.1、语法结构  

        修饰符 返回值类型 方法名(形参列表){

          方法体

        }

      1.2、定义

             1、明确方法三要素:返回值、参数列表、方法体

             2、可以模仿main方法:修改方法名、参数列表、返回值、方法体

      1.3、使用

             类名.方法名(); :静态方法的调用

             对象.方法名(); :  非静态方法的调用

        方法名(); :在同一个类中方法间的调用,注意静态方法只能调用静态方法

      1.4、注意

             方法重载:方法名相同,参数个数或类型不同,与返回值类型和权限无关

             方法重写:方法名、参数个数、类型、返回值类型完全相同,方法体不同,发生在继承类中

    二、数组

      2.1、数组定义

             静态创建:创建的同时放入数据

                  格式1:int [] arr={1,2,3,4};//推荐

                  格式2:int [] arr=new int[]{1,2,3,4};

                  注意:int [] arr=new int[4]{1,2,3,4};//错误

                          

             动态创建:创建时,只是设置数组长度(有默认值,但是默认值是没有多大实际意义的)

                  格式1:int [] arr=new int[4];//推荐

                  格式2:int [] arr;

                                arr=new int[4];

                  注意:int[] arr;

           arr = {1,2,3,4};//错误

      2.2、数组使用(赋值、取值)

             三个术语:元素、长度、下标(0~length-1)

             数组的存、取值,均可通过数组下标进行操作

             数组的遍历:即是将数组中的每个元素取出来

              方式一:for循环

                       方式二:foreach

      2.3、数组加强

        二维数组:严格的来说,java中没有多维数组,都可以看成一维数组,只是数组中存储的元素类型是数组。

         //二维数组的静态创建
            int[][] arr={new int[]{1,2,3},new int[]{2,3,4,5}};
            int[][] arr2={{1,2},{2,3,4}};
            //二维数组的动态创建
            int [][] arr3=new int[4][];
            int [][] arr4=new int[2][3];
            //遍历二维数组
            for(int i=0;i<=arr.length-1;i++){
                for(int j=0;j<=arr[i].length-1;j++){
                    System.out.println(arr[i][j]);
                }
            }

      2.4、Arrays工具类

          static int binarySearch(int[ ] a, int key)//二分查找

          static int[ ] copyOf(int[ ] original, int newLength)// 复制数组

          static int[ ] copyOfRange(int[ ] original, int from, int to)// 将数组指定范围复制到新数组

          static void fill(int[ ] a, int val)//将指定的 int 值分配给指定 int 型数组的每个元素

          static void fill(int[ ] a, int fromIndex, int toIndex, int val)//将值分配给数组指定范围每个元素

          static void sort(int[ ] a) //对数组按数字升序进行排序

          static String toString(int[ ] a)//返回指定数组内容的字符串表示形式

      2.5、可变参数

          本质就是一个动态创建的数组

          语法格式:

          修饰符 返回值类型 方法名(数据类型...变量名){

            方法体

          }

          注意:1、完全当做数组来操作

          2、一个方法有且只有一个可变参数

          3、如果有其他参数,可变参数需方末尾

      2.6、二分查找

        思想:每一次和中间的数做比较

      /**二分查找*/
        public static int binarySearch(int[] arr,int a ) {
            int minIndex=0;//最大索引
            int maxIndex=arr.length-1;//最小索引
            //每一次将中间位置和查询数比较
            while(minIndex<=maxIndex){
                int midIndex=(minIndex+maxIndex)/2;//中间索引
                if(a==arr[midIndex]){
                    return midIndex;
                }else if(arr[midIndex]>a){//中间数值大于查询数
                    maxIndex=midIndex-1;
                }else{
                    minIndex=midIndex+1;
                }
            }
            //如果没有这个数,返回-1
            return -1;
        }

      2.7、冒泡排序

        思想:依次比较相邻的两个数,将小数放在前面,大数放在后面。

      /**冒泡排序*/
        public static void bubbleSort(int[] arr) {
            for(int i=0;i<arr.length-1;i++){//轮数,5个数比较4轮 0 1 2 3,即小于5-1
                for(int j=0;j<arr.length-1-i;j++){//比较出来的数不需要再比较,每轮比出来一个数
                    if(arr[j]>arr[j+1]){
                        //交换位置
                        int temp=arr[j];
                        arr[j]=arr[j+1];
                        arr[j+1]=temp;
                    }
                }
            }
        }

       2.8、直接选择排序

        思想:第一次从R[0]~R[n-1]中选取最小值,与R[0]交换,第二次从R[1]~R[n-1]中选取最小值,与R[1]交换,....

      /**选择直接排序*/
        public static void selectSort(int[] arr) {
            for(int i=0;i<arr.length-1;i++){//轮数,也是每次比较的下标
                //假定最小的数是i位,即每轮开头
                int minIndex=i;
                for(int j=i+1;j<=arr.length-1;j++){//一直比较到到最后一位
                    if(arr[minIndex]>arr[j]){
                        minIndex=j;
                    }
                }
                //每一轮最后的时候,交换值
                int temp=arr[i];
                arr[i]=arr[minIndex];
                arr[minIndex]=temp;
            }
        }

      2.9、反转排序

      /*** 反转排序*/
        public static void reverseSort(int[] arr) {
            //交换次数是长度/2,即4个数换两次,5个数也是换两次
            for(int i=0;i<arr.length/2;i++){
                int temp=arr[i];
                arr[i]=arr[arr.length-1-i];
                arr[arr.length-1-i]=temp;
            }
        }

      

  • 相关阅读:
    java传递String参数
    C++ string与int的互相转换
    java插入排序
    凸包Graham Scan算法实现
    求平面上N点最远两点和最近两点距离
    求最大公约数
    n个数连接得到最小或最大的多位整数(携程)
    Java快排
    背包问题
    二分查找离左边元素最近的(可以等于)
  • 原文地址:https://www.cnblogs.com/zwcnblog/p/9823127.html
Copyright © 2020-2023  润新知