1.4 Java函数(方法)

目录
Java函数(方法)
1.函数的概念
2.函数的定义
2.1 定义语法
2.2 定义位置
3.函数的组成
4.函数的调用
函数的参数(形参与实参)
函数返回值与返回值类型
return 关键字
5.总结
6.多级调用
7.递归
无穷递归
递归
循环阶乘
递归阶乘
总结
作业题
面试题
Java函数(方法)
1.函数的概念
概念:实现特定功能的一段代码吗,可反复使用。
2.函数的定义
2.1 定义语法
public static void 函数名称() { // (遵循标识符命名规范)
// 函数主题,功能代码
}
1
2
3
经验:将需要在多个位置重复使用的一组代码,定义在函数内。
2.2 定义位置
函数定义在类的内部,在main函数并列。

3.函数的组成
public static void 函数名(形参) {
// 函数主题,功能代码
}
1
2
3
public:修饰符(后面会介绍)
static:修饰符(后面会介绍)
void:返回值
函数名:遵循标识符命名规范
形参:形式参数
多数情况下,函数与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使函数完成相应的功能。
调用函数时,所传入的数据被称为“参数”。
4.函数的调用

调用语法:
函数名称(实际参数);
1
经验:“实参”等价于“局部变量的赋值”。
函数的参数(形参与实参)
定义语法:
public static void 函数名(形参) {
// 函数主题,功能代码
}
1
2
3
经验:“形参”等价于“局部变量的声明”。
调用语法:
函数名称(实际参数);
1
经验:“实参”等价于“局部变量的赋值”。
单个参数:

多个参数:

经验:根据具体的业务需求,来定义函数的参数。
函数返回值与返回值类型
函数调用时,一些情况下无需返回结果;另一些情况下则必须返回结果。
例如:
存款操作无需返回结果。
取款操作必须返回结果。
定义语法:
public static 返回值类型 函数名称(形式参数) {
// 函数主体
return value; // 返回值
}
1
2
3
4
规定返回值的具体类型(基本、引用、void)
根据需求返回一个结果(值)。
调用语法:
变量 = 函数名称();
1

return 关键字

return的两种方法:
应用在具有返回值类型的函数中:
return value; // 表示结束当前函数,返回值结果,返回到函数调用处。
1

  • 应用在没有返回值类型(void)的函数中:
    1
    return; // 表示结束当前函数,直接返回到函数调用处。
    1
    5.总结
    注意:一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套。
    经验:一个函数只做一件事。
    好处:
    减少代码冗余。
    提高复用性。
    提高可读性。
    提高可维护性。
    方便风合作。
    6.多级调用
    public class TestNestInvoke {
    public static void main(String[] args) {
    m1();
    }
    public static void m1() {
    System.out.println(“m1() - start”);
    m2();
    System.out.println(“m1() - end”);
    }
    public static void m2() {
    System.out.println(“m2() - start”);
    System.out.println(“m2() - end”);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    运行结果:
    m1() - start
    m2() - start
    m2() - end
    m1() - end
    1
    2
    3
    4
    优先执行函数内部代码,结束后,返回到调用处,继续向下执行。
    7.递归
    无穷递归
    public class TestRecursionInvoke {
    public static void main(String[] args) {
    m1();
    }
    public static void m1() {
    System.out.println(“m1() - start”);
    m1();
    System.out.println(“m1() - end”);
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    运行结果:
    m1() - start
    m1() - start
    m1() - start
    m1() - start
    m1() - start

    Exception in thread “main” java.lang.StackOverflowError
    1
    2
    3
    4
    5
    6
    7
    Exception in thread “main” java.lang.StackOverflowError内存溢出错误
    递归
    实际开发中,递归可以解决具有特定规律的特定问题。
    何时使用递归?
    当需要解决的问题可以拆分成若干个小问题,大小问题的解决方法相同。
    有固定规律,函数中自己调用自己。
    如何正确使用递归?
    设置有效的出口条件,避免无穷递归。
    循环阶乘
    计算阶乘:5 ! = 5 * 4 * 3 * 2 * 1;
    public class TestFactorial {
    public static void main(String[] args) {
    System.out.println(factorial(5));
    }
    public static int factorial(int n) {
    int sum = 1;
    for (int i = 2; i <= n; i++) {
    sum *= i;
    }
    return sum;
    }
    }
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    依次与每个值相乘即可。
    递归阶乘
    阶乘的定义:n != n * (n-1) * (n-2) * (n-3) …

public class TestFactorial {
public static void main(String[] args) {
System.out.println(factorial(5));
}
public static int factorial(int n) {
if (n == 1) { // 出口条件 n = 1时,无需计算阶乘们直接返回结果1;
return 1;
}
return n * factorial(n - 1);
}
}
1
2
3
4
5
6
7
8
9
10
11
注意:所有能以递归解决的问题,循环都可以解决。当解决复杂问题时,递归的实现方式更为简单。

总结
函数的概念:
实现特定功能的一段代码,可反复使用。
函数的定义:
public static void 函数名() {函数主体}
函数的组成:
形参列表、实参列表、返回值类型、返回值、函数名、函数主体。
函数的调用:
函数名(实参…);
函数的好处:
减少冗余、提高复用性、可读性、可维护性、方便分工合作。
递归:
将大问题拆分成若干个小问题,大小问题的解决方法相同,有固定规律、函数中自己调用自己。
作业题
计算从1到某个数以内所有奇数的和。
计算从1到某个数以内所有能被3或者17整除的数的和。
计算1到某个数以内能被7或者3整除但不能同时被这两者整除的数的个数。
计算1到某个数以内能被7整除但不是偶数的数的个数。
从键盘输入一个数n,判断是不是一个质数(质数是只能被1和它自身整除的数)。
求2〜某个数之内的素数。【素数 : 只能被1或本身整除的数】
判断某个年份是否是闰年。
A:能被4整除,并且不能被100整除 (2020)
B:或者能被400整除。
已知有一个数列:f(0) = 1,f(1) = 4,f(n+2) = 2 * f(n+1) + f(n),其中n是大于0的整数,求f(n)的值(提示:使用递归)
求2+22+222+2222。
int a=0,sum=0;
for(int n=1;n<=4;n++){
a=(a*10)+2;
sum+=a;
}
System.out.print(“sum=”+sum);
1
2
3
4
5
6
使用递归实现10 的阶乘。
求某个三位数以内的水仙花数:
水仙花数:一个数各个位上的立方之和,等于本身
例如: 153 = 1(3) + 5(3)+3(3) = 1+125+27 = 153
面试题
面试题

方法的传参过程是如何工作的
在调用方法的使用,在方面参数中写入实参,jvm运行时,会把实参赋值给形参。
return关键字的用法有哪些,举例说明
return; //结束方法 ,可以省略
return sum; //返回结果 sum ,结束方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值