方法-修饰符-返回类型-参数列表-异常列表
【摘要】方法、修饰符、返回类型、参数列表、异常列表
前言
start!
方法[method name]
定义
方法[method]是类的成员之一,[因为在java中,方法不能单独定义,它必须在类之中]。
1 | 修饰符 返回类型 方法名()[throws 异常类型]{ |
方法名字:只要是一个合法的名字就可以,尽可能有意义。
如:getName,nextInt…
调用
当被调用的方法使用static修饰符修饰时:
- 通过类名来调用,也就是:ClassName.methodName();
如:1
2double d = Math.sqrt(4.5);
String istr = Integer.toBinaryString(8);
当被调用的方法没有使用static修饰符修饰时:
- 通过对象来调用,也就是:obj.methodName();
如:1
2
3Scanner sc = new Scanner(System.in);
//此处的sc就是对象[变量]
int i = sc.nextInt();注
:在Java中,方法之间是没有顺序的。
/*
this 当前对象
same class
context 上下文
一个静态方法不能直接调用非静态方法。所以要先创建对象。
*/
重载
在一个类中,具有相同方法名称但不同参数的方法就构成了方法的重载。
什么叫方法的重载?
- 参数个数不同
- 参数类型不同
- 参数顺序不同
如:当调用重载方法时,JVM是根据参数列表来判断出准确的方法的。1
2
3
4
5
6public class Demo{
public int add(int a,int b){return a+b;}
public double add(double a,double b){return a+b;}
public double add(int a,double b){return a+b;}
public double add(double a,int b){return a+b;}
}
递归[recursive]
递归就是指方法直接或间接地调用自己。
利用递归可以用简单的程序来解决一些复杂的问题,比如:斐波那契数列的计算、汉诺塔问题、快排等问题。
递归结构包括两个部分:
- 定义递归头。解答:什么时候不调用自身方法。如果没有头,讲陷入死循环,也就是递归的结束条件。
- 递归体。解答:什么时候需要调用自身方法。
如:求一个整数的阶乘。
5! = 54!; 4! = 43!; 3! = 32!; 2! = 21!; 1! = 1;
使用数学公式就可以表达为:f(n) = n*f(n-1);
所以,递归要有2个条件,也就是上面说的递归结构的两个部分。
一要有规律,二要有退出时机。
注
:使用递归时方法的效率不是很高,它对栈的容量有较大的要求,因为每一次的调用都是利用栈来保存中间的计算结果,直到最后一次递归返回结果。
如果栈不够的话,则JVM会抛出StackOverflowException
。
1 | /* 求阶乘方法 */ |
修饰符[modifier]
访问控制修饰符piblic
,prootected
,默认
,private
其他修饰符 static,abstract,final,syschronized,native,volatile
…
注:修饰符之间是不没有顺序的。
在java中,针对类的成员访问限权有四种,分别对应四种修饰符。
全局 | 子类 | 同包 | 本身 | |
---|---|---|---|---|
public | Y | Y | Y | Y |
protected | N | Y | Y | Y |
默认 | N | N | Y | Y |
private | N | N | N | Y |
返回类型[return type]
1.所有合法的数据类型【包含基本数据类型和自定义对象】 表示这个方法有返回值,则在代码体中必须有return语句,并返回与表示这个方法有一致类型的。
2.void
表示这个方法没用返回值,则在代码体中可以不写return语句,如果一定要写,只能写空返回,如:return;
参数列表[parameters]
参数列表就是局部变量【Local variable】,它的语法与变量一样,只是不能初始化。
如有多个参数,则每个参数之间使用逗号隔开。
如:
1 | public int add(int a,int b){ |
当这个参数被调用[invoke]之时,它的参数才会有值【传递进来】。
所以,对于参数,有两种叫法:
形参,是在方法的定义时所叫,它只有类型,暂时无值。
实参,实在方法的调用时所叫,它既有类型又有值。
异常列表
暂时省略
练习题
design
设计
implements
实现
从以下业务中设计出相关的方法【不考虑实现】。
1 | A.判断一个整数是否是质数 |
刚刚开始接触一个新的知识,拿几个简单的例题联系几次也就知道这是个什么玩意了,当我们搞完上面几个题目就会理解Java方法这个东西了。
点击进入答案解析
- 求两个整数的最大公约数[可以利用递归]
结束语
over!