方法
什么是方法
方法就是将实现某个功能的代码放入一个代码块中,把这个代码块称之为方法。
为什么要用方法
因为随着业务量的增大,代码量会越来越多,如果把所有的代码都方法在main方法,
1、不利于管理
2、有重复的代码
方法的组成部分
public static void main(String[] args){
方法体......
}
方法的修饰符 返回值类型 方法名(参数列表){
方法体......
return 返回的值;
}
方法的修饰符 public static
访问修饰符 public 方法访问修饰符(public 公共的 protected 受保护的 缺省的(默认的) private(私有的))
其他修饰符static 、final 静态的(静态的方法只能使用静态的方法)
返回值类型
一个方法在执行完成之后,返回的结果类型
有返回结果 返回值的类型
没有返回结果 void
方法名
遵循标识符的命名规范(小驼峰)
参数列表
在调用一个方法的时候,传入的数据
可以有多个参数,参数与参数之间用,隔开
方法体
实现功能的代码块
-
方法的定义
- 无参数,没有返回值的方法
关门方法
- 有参数,没有返回值的方法
倒垃圾
- 无参数,有返回值的方法
收破烂
- 有参数,有返回值
取钱
方法的调用
如何调用方法:
a.没有参数没有返回值 方法名();
b.有参数没有返回值 方法名(参数1,参数2......)
注意:实参和形参的个数必须一样,且顺序要一一对应
c.有参数有返回值的 数据类型 变量名 = 方法名(参数1,参数2......);
注意:可以定义变量来接受方法的返回值
d.没有参数有返回值的 数据类型 变量名 = 方法名();
方法使用的几个注意问题
- 方法不能嵌套方法,方法之间是互相独立
- 调用方法的时候,实参和形参要一致(个数、类型、顺序)
- 当方法有返回值,必须要加return,且返回的类型必须与返回值类型一致
- 如果方法没有返回值,也可以加return,但是不能返回结果,return作用是结束方法
- 一个方法只能有一个返回值
方法的重载
重载的概念
1、如果多个方法的名字相同,参数列表不相同,就称之为方法的重载(同名,不同参。与返回值和访问修饰符无关)
举例: 方法的重载
System.out.println("hello");
System.out.println(1000);
System.out.println(10.1);
System.out.println('男');
System.out.println(true);
只要方法重载,才能使得方法名字相同
方法的重载的好处 可以记忆一个方法名就能利根据传递的参数不同,去执行不同的方法
实现重载:同名不同参,与返回值和访问修饰符无关
//编写方法计算两个数字(int 、double)的和
public static int sum(int a, int b) {
return a+b;
}
public static double sum(double a,double b) {
return a + b;
}
为什么要使用方法的重载
System.out.println(123);
System.out.println("cxk");
System.out.println('a');
System.out.println(20.2);
可以传入不同类型的参数,实现不同的功能
重载的案例
public class Demo4 {
public static void main(String[] args) {
// System.out.println(123);
// System.out.println("cxk");
// System.out.println('a');
// System.out.println(20.2);
//doSomeThing("魔兽");
//doSomeThing(3);
// int n = add(10,20);
// System.out.println(n);
System.out.println(add(10,20));
System.out.println(add(10.0,20.0));
System.out.println(add("10","20"));
}
/**
* 如果传入是两个整数,就做加法运算 返回结果
* public static int add(int a,int b){
*
* }
* 如果传入是两个小数,就做乘法运算 返回结果
*
* 如果传入是两个字符串,就拼接两个字符串 返回结果
*
*/
public static int add(int a,int b){
return a+b;
}
public static double add(double a ,double b) {
return a+b;
}
public static String add(String a ,String b) {
return a+b;
}
public static void doSomeThing(String name) {
System.out.println("完游戏"+name);
}
public static void doSomeThing(int num) {
System.out.println("学习"+num+"个小时");
}
}
方法的递归
方法的递归要求
1、在方法中调用自己这个方法
2、递归方法要有出口
3、递归分为回溯阶段和递推阶段
代码演示
求阶乘递归
/**
* 使用递归来计算阶乘
*
* jieCheng1(4)
*
* 4 * jieCheng1(3) 4*6 = 24
*
* 3*jieCheng1(2) 3*2 =6
*
* 2* jieCheng1(1) 2*1 =2
*
* 1
*
*/
public static int jieCheng1(int num) {
if(num == 1) {
return 1;
}
return num * jieCheng1(num-1);
}
求斐波那契数列
/**
* 斐波那契数列
* 参数n 代表项树
* 返回值:第n项值
* method(5)
* method(4) + method(3)
* method(3)+ method(2) method(2) + method(1)
* method(2) + method(1)
*
* method(1) = 1
* method(2) = 2
* method(3) = 3
* method(4) = 5
* method(5) = 8
*/
public static int method(int n) {
if(n == 1 || n == 2) {
return 1;
}
return method(n-1)+method(n-2);
}