Java语言基础--方法的定义、方法的重载、递归

1 方法

1.1 方法的定义

在java中方法就是函数,方法就是在类中单独自定义一个功能,提高代码的复用性。
该如何定义一个功能呢?
(1)功能是独立的,独立的那么就用大括号进行表示;在java中是一个封闭的区间,不能够放在main方法中,放在跟main方法同级别的地方;
(2)对于自定义的功能,需要给他取名字(方法名)
(3)需要有参与运算的数据,对于不确定变量就需要设置为参数例如draw(int row,int col)。若没有就设置为空参。
(4)如果功能调用需要有结果,那么就必须要把结果的类型体现出来。那么如果没有结果呢?那么就直接写入void。
(5)需要提供对外访问方法
(6)怎么去使用这个方法呢?主方法调用自定义的方法,直接在主方法中写入方法名并且把确定的数值传递进去。
自定义方法中参数----形参
调用主方法的参数----实参

1.2 方法的格式:

修饰符 返回值类型 方法名(参数类型 形式参数1,参数类型 形式参数2){
				执行语句;
				return 返回值;
}

(1)方法名后面的小括号里面的内容叫参数,参数就是参与运算的数。如果有多个参数,就用逗号隔开。
(2)方法要通过main主方法调用自定义方法。
主方法调用自定义方法(功能):方法名(参数值);
(3)return代表用于结束功能,并让具体的结果返回,所有的方法都需要写return,但是如果方法的返回值类型是void的时候,return可以省略,jvm在翻译class文件之后会帮我们自动生成。

1.3 方法的特点

(1)定义方法可以将功能代码进行封装。
(2)便于对该功能进行复用。
(3)方法只有被调用才会被执行。
(4)提高了代码的复用性。
(5)对于方法没有具体返回值的情况,返回值类型用关键字void表示,那么该方法中的return语句如果在最后一行可以省略不写。
(6)函数中只能调用函数,不可以在函数内部定义函数。

1.4 方法的应用

自定义方法需要两个明确:
1.明确这个需求的结果是什么----返回值类型
2.明确、这个需求的未知内容----参数类型。
关于基本数据类型和引用类型变量参数的写法:
Java语言基础--方法的定义、方法的重载、递归_第1张图片
形参为基本数据类型变量,在调用add方法时可以直接传入数据,也可以使用变量先赋值,实参也可以传入对应的变量名。
Java语言基础--方法的定义、方法的重载、递归_第2张图片
形参为引用数据类型变量,因此在调用方法时传递的实参传递的是地址。先将数组定义好并进行赋值,直接传入数组名就可。传入整个数组会报错,只能传数组名。

1.5 方法的重载(overload)

定义:在一个类中,方法名相同,参数列表不同,和返回值类型没有关系。
(1)参数列表包括参数类型、参数个数、参数顺序
(2)参数列表是有先后顺序的
(3)重载和返回值没有关系
好处:方便了阅读,优化了程序设计。
(1)在main方法中调用方法,那么会根据方法名字和参数列表去区分调用对应的方法。
(2)如果在方法名相同的情况下,且参数列表(类型和个数都一样),那么就不能够进行区分,所以java不允许这样操作,因为会产生调用的不确定性,不知道调用哪个方法,和返回值没有关系。
(3)如果在方法名相同的情况下,根据参数列表(参数类型或者参数个数)不同而进行区分调用哪个方法。

1.6 重载练习

public static void print(int a,float b,char c){}给出这个方法,看下面哪个方法和这个发生了重载?
(1)public static int print(int x,float y,char z){}
没有发生重载,方法名相同,参数列表(参数类型和参数个数)相同,编译报错。
(2)public static void print(float c,int a,char b){}
发生重载,方法名相同,参数列表不同
(3)public static void print(int c,float a,char b){}
没有发生重载,方法名相同,参数列表相同
(4)public static void print(int a,int b,int c){}
发生重载,方法名相同,参数列表不同
(5)public static double print(){}
发生重载,方法名相同,参数列表不同
(6)public static double show(){}
没有发生重载,方法名不同
判断方法:
(1)方法名相同
(2)参数列表不同,包括参数个数和参数类型。
注意参数名字相同不相同无所谓

1.6 方法的执行过程:

 	程序运行先找主方法(main方法,程序的主入口),主方法进栈,然后执行主方法的内容,如果主方法中调用了其他的方法(add),那么此时add方法就进栈,执行add方法的内容之后,执行完了就出栈,主方法最后出栈。
 	(特点:先进后出,类似于装子弹)

Java语言基础--方法的定义、方法的重载、递归_第3张图片

2 递归调用

2.1 定义

程序调用自身的编程技巧称为递归。

2.2 构成递归需具备的条件

(1)子问题须与原始问题为同样的事,且更为简单;
(2)不能无限制地调用本身,须有个出口,化简为非递归状况处理。

2.3 递归算法解决的问题

(1)数据的定义是按递归定义的。
(2)问题解法按递归算法实现。这类问题虽则本身没有明显的递归结构,但用递归求解比迭代求解更简单
(3)数据的结构形式是按递归定义的。

3 打印输出细节

System.out.print("");// 不输出内容,且不换行
System.out.print("1-1-1");
System.out.print("    ");// 有几个空格输出几个空格
System.out.print("2-2-2");
System.out.println();// 不输出内容,只进行换行操作
System.out.print("3-3-3");

效果如图所示:
在这里插入图片描述

你可能感兴趣的:(潭州学院~~JavaSE)