Java基础(函数、重载、递归)


文章目录

  • Java基础(函数、重载、递归)
  • 一、Java方法(函数)
  • 1.概念
  • 2.创建方法(函数)
  • 3.使用方法
  • 二.方法重载
  • 1.概念:一个方法的多种形式。
  • 三、递归



一、Java方法(函数)

1.概念

概念:开发中我们定义的方法(函数),就是具有一定特殊功能的一段代码,将需要在多个位置重复使用的一组代码,定义在方法内部。
意义:1.避免了重复的代码。2.增强了程序的扩展性。

2.创建方法(函数)

用法
1.方法的定义(声明)

1 [修饰符1,修饰符2...] 返回值/void 方法名(参数列表){
2 //逻辑,主体代码
3 ....
4 return //方法有返回值则返回对应类型值,无返回值为void时不返回return
5 }

示例:

1 //求1-10得的和 
2 public static void getSum(){
3 //方法体
4 int sum =0;
5 for(int i=1;i<=10;i++){
6 sum +=i;
7 }
8 System.out.println("sum:"+sum);
9
10 }


- 修饰符:public,static

- 返回值:一个方法执行之后,返回给调用处的结果。可能有,也可能没有。

- 有:在方法定义的时候,写清楚方法要返回的数据的类型。

- 没有:void,表示这个方法执行结束之后,没有返回值给调用处。

- 方法名:也是一种标识符。首字母小写,驼峰式命名。

- ():方法的标志。括号里:参数列表 {}:方法体

- 参数列表:方法在运算过程中的未知数据,调用者调用方法时传递

- return :将方法执行后的结果带给调用者,方法执行到 return ,整体方法运行结束

3.使用方法

2.运行执行方法:
方法的运行执行(如果一个方法只有定义,那么方法中代码并没有被执行,只有被调用了才会执行
方法中的代码)

通过方法的名字进行调用。
1 static的方法:静态方法
2 类名.方法名(),同一类型调用类名可以省略。
3 非static的方法:非静态方法
4 创建该类的对象,通过对象调用方法。
5 类名 对象名 = new 类名();
6 对象.方法名();

示例:

1 //调用一个方法,如果是类的方法,可以用类名直接调用
2 //倘若是在本类中,那么类名可以省略
3 //1,static方法的调用
4 getSum();//方法的调用
5 //2,非static方法的调用
6 /*
7 创建该类的对象,通过对象调用方法。
8
9 类名 对象名 = new 类名();
10
11 对象.方法名();
12
13 */
14 Demo1 demo1 = new Demo1();
15 demo1.test();//非static方法的调用

注:
1.如果一个方法声明了有返回值(非void),那么方法中一定要使用return语句返回结果。
2.定义方法的时候,声明的返回值类型,一定得和return后实际上返回的数值类型一致。
3.如果一个方法声明了有返回值,如果方法中有分支语句或者循环语句,那么要保证无论执行哪个分
支,都要有return可以被执行到。
4.如果一个方法声明没有返回值(void),那么方法中也可以使用return语句,用于强制结束方法的执
行。
方法参数
一个方法中,有些数据的数值不确定,我们定义为参数,由调用处调用方法的时候,传入具体的数
据。

  • 形式参数:形参
  • 定义方式,声明的参数,用于接收调用处传来的数据。
  • 实参一定严格匹配形参:一一对应,包括顺序,个数,类型。

示例:

1
2
/**
3 * 方法的参数
4 */
5 public class Demo {
6
7 public static int getSum(int n){
8 int sum = 0;
9 for(int i=1;i<=n;i++){
10
11 sum +=i;
12
13 }
14 return sum;
15 }
16
17 public static int getSum2(int a,int b){
18
19 return a+b;
20 }
21
22
23 public static void main(String[] args) {
24
25 //求1-10的和;
26 int result1 = getSum(10);
27
28 //求1-20的和;
29 //int result2 = getSum2();
30 int result2 = getSum(20);
31
32 //求1-100的和;
33
34
35 //求两个数的和
36 int result3 = getSum2(1,2);
37
38 }
39
40 }

二.方法重载

1.概念:一个方法的多种形式。

  • 同一个类中
  • 方法名相同
  • 参数列表必须不同(顺序,个数,类型)
    与static,返回值,其他的修饰符。。。这些无关:

示例:

2
public class Demo_overload {
3 public static void test1(){}
4
5 public static void test2(){}
6
7 public void test3(){}
8
9
10 public static int getSum(int a,int b){
11 return a+b;
12 }
13
14 public static double getSum(double a,double b){
15 return a+b;
16 }
17
18 public void getSum(int c){
19
20 }
21 public static void main(String[] args) {
22
23 int result = getSum(1,2);
24
25 double result2 = getSum(2.3,4);
26
27
28 }
29 }

三、递归

方法中调用方法本身,就叫做递归方法。
递归方法一定有出口的,逐层的向出口靠近。

示例:

blic class Demo_recursion {
2
3 public void test1(){
4 System.out.println(".........");
5 test1();
6 }
7
8 public void test2(){
9 test1();
10
11 }
12 public void test3(){
13 test2();
14 test1();
15 }
16
17
18 public static void test4(int n){
19 System.out.println("hello,world!");
20 if(n==1){
21 return;
22 }
23 test4(n-1);
24 //test4(3);....
25 //test4(2);....
26 //test4(1);....
27 }
28
29
30
31 public static int getSum(int n){
32
33 if(n==1){
34 return 1;
35 }
36 return getSum(n-1)+n;
37
38 }
39
40 /*
41
42 getSum(5) = getSum(4)+5 = 10+5; getSum(n-1)+n
43 = getSum(3)+4 = 6+4;
44 = getSum(2)+3 = 3+3;
45 = getSum(1)+2 = 1+2;
46 = 1
47 */
48
49 public static void main(String[] args) {
50
51 int result = getSum(5);
52 System.out.println("result:"+result);
53
54
55 test4(5);
56 }
57 }