
目录
总结
方法是一个代码片段,方法名是用小驼峰命名,在同一个类中调用静态方法是直接 方法名 调用,不同类中调用静态方法是 类名.方法名 调用,调用非静态方法时对象调用。 形参是实参的临时考本,两个是两块实体。方法重载与返回值类型无关,只与参数列表个数、类型、次序相关 。递归是一个方法执行自身的过程。
1、方法的概念
方法是一个代码片段, 类似C语言中的 "函数"。
main方法:
java
public class Demo1 {
public static void main(String[] args) {
//方法体
}
}
存在的意义:
1.模块化组织代码
代码规模变的复杂时,方法可以将功能相关的代码封装成独立的模块,让程序结构更清晰,便于管理和维护。
2.代码的复用
比如说算术运算 add(int a, int b)会执行多次不同位置的求和运算,不用每次都写 int c = a + b 或者 System.out.println( a + b); 直接调用 add(int a, int b)实现代码的复用
3.代码更好理解更简单,有利于系统的维护(找bug比较好找)
2、如何定义
方法的语法格式:
修饰符 返回值类型 方法名称(参数类型 形参...) {
方法体代码;
return 返回值\]; }

举例:
①年份是否为闰年
java
public class Demo1 {
//是否是闰年
public static boolean is_LeapYear(int year) {
//闰年 能被4整除且不能被100整除 或者 能被400整除
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return true;
}else {
return false;
}
}
public static void main(String[] args) {
System.out.println(is_LeapYear(2005));
}
}
②两个整数相加
java
public class Demo2 {
//两个数相加
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
System.out.println(add(6,7));
}
}
注意事项:
1、修饰符是 public static固定搭配
2、返回值类型:方法有返回值,返回值类型必须和返回的实体类型一致,没有返回值就是void
3、方法名字:小驼峰命名(首字母小写,其他字母大写)
4、Java中,方法必须写在类中
5、Java中,方法不能嵌套定义
6、方法不能声明其他方法,可以调用其他方法
3、怎么调用
方法和C语言函数一样,定义之后需调用它
在Java中调用静态方法,有两种调用方式:
①使用对象调用(不推荐)
java
public class Demo2 {
//两个数相加
public static int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
//对象调用静态方法
Demo2 demo2 = new Demo2();
int x = demo2.add(6,7);
System.out.println(x);//13
}
}
②在不同的类 中调用 直接用 类名.方法名 调用
java
class Test{
//两个数相加
public static int add(int a, int b) {
return a + b;
}
}
public class Demo2 {
public static void main(String[] args) {
//对象调用静态方法
Demo2 demo2 = new Demo2();
int x = Test.add(8,9);
System.out.println(x);//17
}
}
(在同一个类 静态方法 中 调用静态方法:直接用方法名调用)
Java中调用非静态方法:
非静态方法(没有static修饰)必须通过对象调用,不能直接用类名调用
java
public class Demo2 {
//两个数相加
public int add(int a, int b) {
return a + b;
}
public static void main(String[] args) {
//对象调用非静态方法
Demo2 demo2 = new Demo2();
int x = demo2.add(6,7);
System.out.println(x);//13
}
}

4、形参和实参的关系
形参是方法定义时,需要借助的一个变量,用来保存方法在调用时传过来的值
形参是实参的一块临时拷贝 ,也就是传值调用 ,所以形参和实参本质是两块实体

没有返回值的方法
java
public class Demo3 {
public static void test(int a, int b) {
if (a > b) {
return;//直接结束这个方法
}else {
System.out.println(a + ">" + b);
}
}
public static void main(String[] args) {
test(10,20);//10>20
}
}
5、方法重载
方法重载 就是方法名一样,只管参数列表不相同(个数或者类型不同或者参数次序不同), 与返回值类型无关。
为什么有方法重载?
比如说我要写一个两个整数求和方法 sum(int a, int b)
后面需要三个变量求和 即可以写成这样 sum (int a, int b, double c)
因为我们都是在求和,不能每次参数列表个数或者类型不同的时候,新创建一个方法都需要重新命名吧,所以即都是求和,我们只需要对方法进行重载Overload就不会如此麻烦
就像是 "一词多义" 一样的,求和可以是求整数、求小数的和,所以就是方法重载
java
public class Demo2 {
//两个整数求和
public static void sum(int a, int b) {
System.out.println(a + b);
}
//三个整数求和
public static int sum (int a, int b, int c) {
return a + b + c;
}
//整数和浮点数求和
public static void sum (int a, double b) {
System.out.println(a + b);
}
public static void main(String[] args) {
sum(7,9);//16
sum(6,6.66);//12.66
System.out.println(sum(1, 2, 3));//6
}
}
6、方法签名
方法签名就是,经过编译器编译修改之后方法的最终名字。
具体方式:方法全路径+参数列表+返回值类型,构成方法的完整名字。
7、递归
递归就是一个方法在执行过程中调用自身。
递归相当于数学上的 "数学归纳法",有个起始条件,然后有个递推公式。
递归的必要条件:
1.将原问题划分成其子问题,子问题必须与原问题解法相同
2.递归出口
可以参考这篇文章
C语言-------(递归函数)斐波那契数数列(青蛙跳台阶)_递归斐波那契数列c语言-CSDN博客
举例:求n的阶乘
java
public class Recursion {
//求n的阶乘
public static long factor(int n) { //long类型避免值溢出
//1的阶乘是1
if (n == 1) {
return 1;
}
return n * factor(n - 1);//factor调用自身
}
public static void main(String[] args) {
System.out.println(factor(20));//2432902008176640000
}
}
举例:递归求1~10的和
java
public class Recursion {
//递归求和求1-10的和
public static int add(int a) {
//只有1的时候
if (a == 1) {
return 1;
}
return a + add(a - 1);//调用add自身
}
public static void main(String[] args) {
System.out.println(add(10));//55
}
}