一、Java语言基础(4)_方法和数组——方法设计

 

2018-04-18

 

方法设计

 

一、方法的定义和调用

  可以完成独立功能,可重复使用的一段代码的集合

 

  1.方法定义格式:

      [修饰符] 返回值类型 方法名称([形参1,形参2,...])

        {

          方法体

          [return 返回值;(如果方法需要给调用者返回一个结果)]

        }

 

    注意:方法必须调用才能生效(菜单点菜可以类比调用)

 

  2.方法的调用:

   main方法由JVM调用

   1)方法使用了static修饰

      方法所在的类名.方法名(参数);

   2)方法没有使用static修饰

      使用方法所在类的对象来调用(面向对象)。

 

  3.方法定义的位置:

    1)方法定义在类中,java中最小的程序单元是类

    2)方法定义在其他方法之外,属于平行关系,不是包含关系

    3)方法定义的先后顺序没有影响。

 

 

 1 public class MethodDemo
 2 {
 3     //将共同两把行抽离出来
 4     static void doWork()
 5     {
 6         System.out.println("共同两百行");
 7     }
 8     public static void main(String[] args){
 9 
10         System.out.println("代码A");
11         MethodDemo.doWork();//调用方法
12         System.out.println("代码B");
13         MethodDemo.doWork();//调用方法
14         System.out.println("代码C");
15         MethodDemo.doWork();//调用方法
16         System.out.println("代码D");
17         MethodDemo.doWork();//调用方法
18         System.out.println("代码E");
19         MethodDemo.doWork();//调用方法
20     }
21 }

 

二、方法中的术语

  修饰符:public,static等

      public表示方法的访问权限

      static表示修饰的方法属于类,直接使用类名调用即可

  返回值类型(返回类型):方法其实是在完成某一个功能,该功能操作完成以后,是否需要给调用者返回一个结果。

              如果方法不需要给调用者返回结果,那么此时使用关键字void来申明,无返回的意思。

  方法名称:遵循标识符的规范,使用动词表示,首字母小写,若是由多个单词组成则使用驼峰法命名。

  形式参数:方法圆括号中的变量,仅仅是占位而已(形式参数可以有多个)。

  参数列表:参数列表 = 参数的类型 + 参数的个数 + 参数的顺序

  方法签名:方法签名 = 方法名称 + 参数列表

       在同一个类中,方法签名是唯一的,如果方法签名相同则编译报错。

   方法体:方法{}里的代码,表示完成该功能的代码。

  返回值:在方法内部,使用return关键字

      作用1):给调用者返回一个结果值,此时改方法不能使用void修饰

      作用2):结束当前方法

  实际参数:调用者在调用方法时,实际传递的参数值

 

二、如何设计方法

  1.定义什么功能

  2.是否需要定义返回值类型

      方法其实是在完成某一个功能,该功能操作完成以后,是否需要给调用者返回一个结果。

 

      如果方法不需要给调用者返回结果,那么此时使用关键字void来申明,无返回的意思。

      如果需要返回结果,就把该结果的数据类型作为该方法的返回值类型,并且调用者应该定义一个变量接受去返回结果

      打印操作:重要的是方法执行的过程,而不是结果,所以此时使用void申明

      例:求两个数结果(重要的是方法执行的过程,并且执行完毕后,需要给调用者返回结果。)

 

  3.是否需要形式参数  

    方法在完成功能的过程当中,是否有未知因素的参与,如果有则作为形参传递,如果没有则没有形参。

     例:求两个数之和,这两个数的值对于方法来说是未知的,仅仅是调用者知道,而且不同的调用者传递不同的参数

 

四种情况:   

a:无参数无返回
b:有参数无返回
c:无参数有返回
d:有参数有返回

 

 1 class a 
 2 {
 3     //无参数无返回
 4     static void p(){
 5             System.out.println("哈哈哈哈");
 6         }
 7 
 8     //有参数无返回
 9     //需求:打印任意值
10     static void pValue(String val){
11         System.out.println(val);
12     }
13 
14     //无参数有返回
15     //返回年龄(17岁)
16     static int getAge(){
17         return 17;
18     }
19 
20     //有参数有返回
21     //求两个数之和
22     static int getSum(int a, int b){
23         return a + b;
24     }
25 
26 
27     public static void main(String[] args) 
28     {
29         a.p();//调用
30 
31         a.pValue("Hello");//接受hello字符串
32         
33         //定义变量,并接受getAge返回的结果
34         int age = a.getAge();
35         System.out.println(age);
36 
37         //定义变量sum接受getSum返回的结果
38         int sum = a.getSum(1,2);
39         System.out.println(sum);
40     }
41 }

 

二、方法的特点-执行流程

  把实参赋值给形参,注意顺序

 

三、方法设计练习

 

  设计发短信和用户登录的方法

 

 

 

四、方法的重载设计

  方法重载定义:在一个类中定义多个同名的方法,要求方法之间的参数列表不同即可。

  方法重载的作用:完成一组任务相似但参数的类型或参数的个数不同的方法。(屏蔽同一功能的方法由于参数不同而造成方法名称不同的差异)

  方法重载的调用:Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

  方法重载的判断:两同一不同

          两同:同一个类,方法名称相同

          一不同:方法的参数列表不一致(参数类型、参数个数、参数顺序)

  注意:方法重载和方法返回值类型无关,只是一般要求同一功能的方法返回值类型一致

     参数列表和参数名称无关,也就是说方法重载和形参无关

 

 

Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法

 

 

 

五、方法重载在JDK中的使用

 

 

六、方法递归

  含义:递归算法是一种直接或间接地调用自身的算法。(所谓递归就是循环,就是调用你本身的循环体,需要一个出口,不然就是死循环。)

 

例:

 1 class Recursion 
 2 {
 3     public static void main(String[] args) 
 4     {
 5         int car = 5;
 6         int i = 1;
 7         System.out.println(ret(car,i));
 8     }
 9 
10     public static int ret(int car, int i){
11         car = 2 * (car-2);
12         i++;
13         if( i < 3){
14             car = car + ret(car,i);
15         }
16         return car;
17     }
18 }

 

输出结果:

 

 说明:此方法就是调用了递归,recursion(car,i)自已调用了自已的方法。从此方法中,可以先对它进行了传递参数,分别是car(值),i(对递归次数的控制),car=2*(car-2)这是对car第一次的计算,

    用if判断是否结束,在这个if判断中把每次递归都放入car,进行计算的值返回。这个递归直到3次,计算car的值都放入了car中,打印出car的总和,结束(出口)。

 

posted @ 2018-04-23 23:43  sunNoI  阅读(277)  评论(0编辑  收藏  举报