函数:就是定义一段具有独特功能的小程序

* 优点:简化代码    封装功能   隐藏细节
          * 修饰符   返回值类型   函数名(参数类型  形式参数){
          *         执行语;
          *         return 返回值;
          * }
          * 
          * 值传递   引用传递
          * 
          * 
          * 函数调用:  函数名(实际参数......);
          */

 //定义一个没有返回值的函数    void代表没有返回值   静态的方法可以直接调用
     public static void add(int x,int y){//xy就是形式参数
         int temp = x+y;
         System.out.println(temp);
         return;
     }//定义一个有返回值的函数    非静态    通过实例化名(对象名)类调用
     public double add1(int a, int b){
         int temp = a+b;
         return temp;
     }

 //定义一个修改参数值的方法
     //基本数据类型当参数传递时没有返回值的时候     重新赋予变量值的之后 是没有作用的
     public static void  update1(int z){
         z++;
         System.out.println(z);//6
     }




函数的重载: 

* 同一个类
          *  函数名相同 
          *  参数的个数和类型不同 
          *  和返回值无关
          */// 两个整数相加的函数
     public static int add(int a, int b) {
         return a + b;
     }    // 两个浮点数相加的函数
     public static float add(float a, float b) {
         return a + b;
         //函数里面不能在定义函数  只能调用函数
         /*public static void  addd(){
         } */
     }    // 三个数相加的函数
     public  int add(int a, int b, int c) {
         int temp = add(a,b);
         return temp + c;
     }



注意:
         * 函数功能中
         *  有返回值的函数   定义其数据类型
         *  没有返回值的函数    void
         *  基本数据类型和引用数据类型传递
         *  静态和非静态,  静态方法里面不能直接调用非静态的方法      非静态的方法可以直接调用静态的方法
            (后续会讲解static的具体用法)
         *  函数重载:同一个类、函数名相同、参数个数和类型不同、和返回值无关
         *  函数里面不能在定义函数  只能调用函数

其中:
         基本数据类型就是int等八大基本数据类型;
         引用数据类型包括:类、接口类型、数组类型、枚举类型、注解类型。
         基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。
         引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由                                   栈上面的引用指向堆中对象的地址。(后续继续跟进堆、栈)