语句块


        语句块(有时叫做复合语句),是用花括号扩起的任意数量的简单 Java 语句。



         块确定了局部变量的作用域。        


        块中的程序代码,作为一个整体,是要被一起执行的。


        块可以被嵌套在另一个块中,但是不能在两个嵌套的块内声明同名的变量。


        语句块可以使用外部的变量,而外部不能使用语句块中定义的变量,因为语句块中定义的变量作用域只限于语句块

方法



        方法(method)就是一段用来完成特定功能的代码片段,类似于其它语言的函数(function)。




方法用于定义该类或该类的实例的行为特征和功能实现。

方法是类和对象行为特征的抽象,很类似于面向过程中的函数。


面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。

面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

方法声明格式:


[修饰符 1 修饰符 2 …]  返回值类型  方法名(形式参数列表){

        Java 语句;… … …

}


方法的调用方式:


        对象名. 方法名(实参列表)




方法的详细说明


  • 形式参数:在方法声明时用于接收外界传入的数据。
  • 实参:调用方法时实际传给方法的数据。
  • 返回值:方法在执行完毕后返还给调用它的环境的数据。
  •  返回值类型:事先约定的返回值的数据类型,如无返回值,必须指定为 void。



public class Test20 { 
    /** main 方法:程序的入口 */ 
    public static void main(String[ ] args) { 
        int num1 = 10; 
        int num2 = 20; 
        //调用求和的方法:将 num1 与 num2 的值传给 add 方法中的 n1 与 n2 
        // 求完和后将结果返回,用 sum 接收结果 
        int sum = add(num1, num2); 
        System.out.println("sum = " + sum);
        //输出:sum = 30 
        //调用打印的方法:该方法没有返回值 
        print(); }
    /** 求和的方法 */ 
    public static int add(int n1, int n2) { 
        int sum = n1 + n2; 
        return sum;
        //使用 return 返回计算的结果 
    }
    /** 打印的方法 */ 
    public static void print() { 
        System.out.println("今天天气真好!"); 
    } 
}

注意事项

  1.  实参的数目、数据类型和次序必须和所调用的方法声明的形式参数列表匹配。
  2.  return 语句终止方法的运行并指定要返回的数据。
  3. java 中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本):            基本类型传递的是该数据值的 copy 值。                                                                          引用类型传递的是该对象引用的 copy 值,但指向的是同一个对象

方法的重载(overload)



        方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会



根据不同的参数自动匹配对应的方法。




新手雷区


  1.重载的方法,实际是完全不同的方法,只是名称相同而已!


  2.构成方法重载的条件:


  •     不同的含义:形参类型、形参个数、形参顺序不同
  •     只有返回值不同不构成方法的重载

        如:int a(String str){}与 void a(String str){}不构成方法重载

  •      只有形参的名称不同,不构成方法的重载                                                                  如:int a(String str){}与 int a(String s){}不构成方法重载 



public class Test21 { 

    public static void main(String[ ] args) { 

        System.out.println(add(3, 5));// 8 
        System.out.println(add(3, 5, 10));// 18 
        System.out.println(add(3.0, 5));// 8.0 
        System.out.println(add(3, 5.0));// 8.0 
        // 我们已经见过的方法的重载 
        System.out.println();// 0 个参数 
        System.out.println(1);// 参数是 1 个int
        System.out.println(3.0);// 参数是 1 个 double 
    }

    /** 求和的方法 */ 
    public static int add(int n1, int n2) { 
        int sum = n1 + n2; 
        return sum; 
    }

    // 方法名相同,参数个数不同,构成重载
    public static int add(int n1, int n2, int n3) { 
        int sum = n1 + n2 + n3; 
        return sum; 
    }

    // 方法名相同,参数类型不同,构成重载 
    public static double add(double n1, int n2) { 
        double sum = n1 + n2; 
        return sum; 
    }

    // 方法名相同,参数顺序不同,构成重载
     public static double add(int n1, double n2) { 
        double sum = n1 + n2; 
        return sum; 
    }

    //编译错误:只有返回值不同,不构成方法的重载
     public static double add(int n1, int n2) { 
        double sum = n1 + n2; 
        return sum; 
    }

    //编译错误:只有参数名称不同,不构成方法的重载 
    public static int add(int n2, int n1) { 
        double sum = n1 + n2; 
        return sum; 
    } 
}