method(方法)
在学习方法之前,我们应该了解什么是方法?
拿我们之前经常用的输出语句来说:
System.out.println();
System:它是系统中的一个类
out:它是System下的一个输出对象
println() :它就是方法。
即,调用一个系统类标准输出对象out中的println()方法。
方法的定义
Java的方法类似于其他语言的函数,是 一段用来完成特定功能的代码片段 。
一般情况下,定义一个方法包括以下语法:
方法包含一个方法和一个方法体。
下面是一个方法的所有部分:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
- 修饰符: 修饰符,这是可选的,告诉编译器如何调用该方法,定义了该方法的访问类型。
- 返回值类型: 方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType的是关键字void。
- void (空的) 没有返回值的情况下,一般都是使用void
- 方法名: 是方法的实际名称。方法名和参数表共同构成方法签名。
- 参数类型: 分为形式参数和实际参数两种
实际参数:实际调用传递给它的参数
形式参数:在方法被调用时用于接收外界输入的数据(用来定义作用的) - 方法体:方法体包含具体的语句,定义该方法的功能。
例子:写一个加法方法,并使用。
package com.java.method;
public class Demo01 {
//mian方法
public static void main(String[] args) {
/*加法方法使用:
1.输入方法名(); 例如sum();
2.在括号内输入数值 sum(1,2);
3.alt+回车
4.输入输出语句sout,输出方法名
*/
int sum = sum(1, 2);
System.out.println(sum);
//结果为3
}
//加法方法
public static int sum(int a,int b){
//public和static都是修饰符
// int是返回值的类型
return a+b;
}
}
设计方法的原则
一个方法只完成1个功能,这样利于我们后期的扩展。
方法的命名规则
遵循小驼峰:首字母小写,后接驼峰。
方法的调用
调用方法:对象名.方法名(实参列表)
java支持两种调用方法的方式,根据方法是否返回值来选择。
1. 当方法返回一个值的时候,方法调用通常被当作一个值。
例如:int a = max(10,20);
2.如果方法返回值为void,方法调用一定是一条语句。
System.out.println("hello,world!");
拓展:return 0; (终止方法)
package com.java.method;
public class Demo02 {
public static void main(String[] args) {
int max = max(1, 2);
System.out.println(max);
}
//比大小
public static int max(int num1,int num2){
int result = 0; //设定一个值,result是结果的意思
if (num1==num2){
System.out.println("num1=num2");
return 0;
//return 除了返回值外,还可以终止方法
}
if (num1 > num2){
result = num1;
}else {
result = num2;
}
return result;
}
}
方法的重载
重载就是在一个类中,有相同的函数名称,但形参不同的函数。
方法重载的规则
1.方法名称必须相同
2.参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)
3.方法的返回类型可以相同也可以不相同
4.仅仅返回类型不同不足以成为方法的重载
例子:对Demo01里的加法方法实现重载
package com.java.method;
public class Demo03 {
public static void main(String[] args) {
//方法重载
double sum = sum(9.0, 10.0);
System.out.println(sum); //19.0
}
//对Demo01里的加法方法实现重载
public static int sum(int a,int b){
return a+b;
}
//答:
public static double sum(double a,double b){
return a+b;
}
}
递归(重点)
递归就是A方法调用A方法,自己调用自己。
注意:基数过大的时候不建议使用!!!
递归结构
递归头:什么时候不调用自身方法。如果没有头将陷入死循环。
package com.javaSe.method;
public class Demo07
public static void main(String[] args){
Demo07 test = new Demo07();
test.test();
}
public void test(){
test();
}
//不断的报错
递归体:什么时候需要调用自身方法。
package com.javaSe.method;
public class Demo07 {
public static void main(String[] args){
System.out.println(test(5)); //120
}
public static int test(int f){
if (f==1){
//边界条件:有边界,达到f(1)后就会一步一步返回。
return 1;
}else {
//前阶段:当参数不等于1的时候,就不断调用自身
return f*test(f-1);
//后阶段:从最大的参数开始n*(n-1)
}
}
}
这个例子涉及到了大学数学的知识:阶乘
阶乘:数字后接!是阶乘的表达方式
1! = 1
2! = 2*1
...
5! = 5*4*3*2*1