博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
黑马程序员---java基础----------------- 函数和数组
阅读量:6089 次
发布时间:2019-06-20

本文共 5712 字,大约阅读时间需要 19 分钟。

1,函数

  函数就是定义在类中的具有特定功能的一段独立小程序,也称之为方法。

  格式:修饰符   返回值类型    函数名   (参数类型   形式参数1,参数类型   形式参数2,……)

     {

        执行语句;

        return 返回值;

     }

  一般,我们为了提高代码的复用性,我们可以将代码进行抽取,封装成独立的函数,用大的时候直接调用即可。对于函数没有具体返回值的情况,返回值类型用关键字void表示,那么该函数中的return语句如果在最后一行可以省略不写。主要注意的是:函数中只能调用函数,不可以在函数中再定义函数,定义函数时,函数的结果应该返回给调用者,交由调用者处理。

看代码:

class FunctionDemo {  

     public static void main(String[] args)  {  

        getResult(5);

     }

     public static void getResult(int num)  {  //这个就是封装之后的函数,这样就提高了函数的复用性和扩展性。它的功能是计算一个数乘以3加5的结果,void为不

       System.out.println(num * 3 + 5);   //返回结果

       return;//可以省略  }  

    }

}


如何定义一个函数呢?

     1,既然函数是一个独立的功能,那么该功能的运算结果是什么先明确,因为这是在明确函数的返回值类型。
     2,在明确在定义该功能的过程中是否需要未知的内容参与运算。因为是在明确函数的参数列表(参数的类型和参数的个数)。

再来看一段代码:

class  FunctionTest {

   public static void main(String[] args)  {  

     draw(5,6);   

    printHr();   

    draw(7,9);

    printHr();

     print99();   

   }

  //定义一个打印99乘法表功能的函数。

  public static void print99()

   {
      for(int x=1; x<=9; x++)
      {
         for(int y=1; y<=x; y++)
         {
            System.out.print(y+"*"+x+"="+y*x+"\t");
         }
         System.out.println();
      }
   }

  public static void draw(int row,int col)//打印矩形的方法

   {  
      for(int x=0; x<row; x++)
      {
         for(int y=0; y<col; y++)
         {
            System.out.print("*");
         }
         System.out.println();
      }
   }

  public static void printHr()//打印水平线

   {
      System.out.println("------------------------------");
   }

}

  函数的重载:函数名相同,参数列表有变只和这两个有关系啊。看下面的例子

class FunctionOverload {  

  public static void main(String[] args)  {

      add(4,5);  

      add(4,5,6);

  }

  //定义一个加法运算,获取两个整数的和。

   public static int add(int x,int y)  {  

      return x+y;

   }

   //定义一个加法,获取三个整数的和。  

  public static int add(int x,int y,int z)  {   

    return add(x,y)+z;  

  }

}

什么时候用重载?

  当定义的功能相同,但参与运算的未知内容不同。
  那么,这时就定义一个函数名称以表示起功能,方便阅读,而通过参数列表的不同来区分多个同名函数

2,数组

  数组就是同一种类型数据的集合,数组是一个容器,它可以给数组中的元素自动从0开始编号,方便操作。

  申明:

    元素类型[]    数组名=new  元素类型[元素个数或数组长度];    int  []  arr=new int[5];

    元素类型[]    数组名=new  元素类型[]{元素1,元素2,……};    int  []  arr=new int[]{1,2,3,4,5};

  数组的初始化:

    静态初始化:创建数组时,程序员显式地为数组中的元素赋初值,你不指定数组长度    int[] arr = {1,2,3,4,5} ;             int[] arr1 = new int[]{1,2,3,4,5};

    动态初始化:创建数组时,由系统默认地为数组中的元素赋初值,你指定数组长度      int[] a;     a = new int[3];

  数组元素的默认值:int型的是0,float是0.0,string是null

  数组的异常:

    数组越界异常:操作数组时,访问到了数组中不存在的角标,                    ArrayIndexOutOfBoundsException

    空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体,                    NullPointerException

  获取数组的长度:

    数组名.length                      System.out.println("length:"+arr.length);

    要获取数组的长度,通常要用到遍历。有一个题是这样的,要求将数组的元素用逗号隔开

      

        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]+"]");

            }  

         }

数组的各种排序

      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 bubbleSort(int[] arr)

       {
          for(int x=0; x<arr.length-1; x++)
          {         
             for(int y=0; y<arr.length-x-1; y++)//-x:让每一次比较的元素减少,-1:避免角标越界。
             {
                if(arr[y]<arr[y+1])
                {
                   swap(arr,y,y+1);
                }
             }
          }
       }

 

      public static void swap(int[] arr,int a,int b)

       {
          int temp = arr[a];
          arr[a] = arr[b];
          arr[b] = temp;
       }

 

      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]+"]");

            }  

       }


数组的反转

      public static void reverseArray(int[] arr)

       {
          for(int start=0,end=arr.length-1; start<end ; start++,end--)
          {
             swap(arr,start,end);
          }
       }

      public static void swap(int[] arr,int a,int b)

       {
          int temp = arr[a];
          arr[a] = arr[b];
          arr[b] = temp;
       }

 


定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。

      public static int getIndex(int[] arr,int key)

       {
            for(int x=0; x<arr.length; x++)
            {
               if(arr[x]==key)
                return x;
            }
            return -1;
       }

 

       public static int getIndex_2(int[] arr,int key)  {  

           int min = 0,max = arr.length-1,mid;

           while(min<=max)   {    

            mid = (max+min)>>1;

             if(key>arr[mid])    

                 min = mid + 1;    

            else if(key<arr[mid])     

                max = mid - 1;    

            else     

                return mid;   

          }   

          return min;  

        }

 

 


折半查找

      public static int halfSearch(int[] arr,int key)  {   

          int min,max,mid;   min = 0;   

          max = arr.length-1;   

          mid = (max+min)/2;

           while(arr[mid]!=key)   {  

              if(key>arr[mid])     

                min = mid + 1;    

              else if(key<arr[mid])     

                max = mid - 1;

               if(min>max)    

                 return -1;    

                mid = (max+min)/2;  

          }   

          return mid;

       }

 

      public static int halfSearch_2(int[] arr,int key)  {  

           int min = 0,max = arr.length-1,mid;

            while(min<=max)   {    

              mid = (max+min)>>1;

                if(key>arr[mid])     

                  min = mid + 1;    

              else if(key<arr[mid])     

                  max = mid - 1;    

              else     

                  return mid;   

            }  

            return -1;  

        }

 

  

转载于:https://www.cnblogs.com/zhaolibin198627/archive/2013/05/22/3093416.html

你可能感兴趣的文章
hdu 2191 (多重背包+二进制优化)
查看>>
home.php
查看>>
neo4j---删除关系和节点
查看>>
redis分布式锁redisson
查看>>
什么样的企业可以称之为初创企业?
查看>>
Python爬虫之BeautifulSoup
查看>>
《HTML 5与CSS 3权威指南(第3版·下册)》——第20章 使用选择器在页面中插入内容...
查看>>
如何判断自己适不适合做程序员?这几个特点了解一下
查看>>
newinstance()和new有什么区别
查看>>
android下载封装类
查看>>
[node] 用 node-webkit 开发桌面应用
查看>>
Nginx访问控制和虚拟主机
查看>>
report widget not working for external users
查看>>
windows phone 摄像头得到图片是旋转90°
查看>>
Linux--sed使用
查看>>
没有显示器的情况下安装和使用树莓派
查看>>
【android】使用handler更新UI
查看>>
mochiweb 源码阅读(十五)
查看>>
前端面试中的常见的算法问题
查看>>
计算机语言的基本理论
查看>>