方法
方法的概念
Java的方法(Method)类似于其它语言的函数(Function),指一段可以直接被另一段程
序或代码引用的程序或代码。
一个较大的程序一般应分为若干个程序块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。
面向过程语言中,整个程序就是由函数(相互调用)组成的
面向对象语言中,方法(函数)是类的组成部份,整个程序是由很多类组成的
通俗讲,方法就是解决某件事情的办法,比如 我要上班,可以选择 步行,骑车,开车,公共交通,而每一个方式,在程序中就可能是一个方法。
方法的组成要素
方法的组成要素:修饰符 返回值 方法名 参数 方法体 五个要素
为什么要用方法?
简化代码提高代码的复用性
提高代码的可读性
提高代码的安全性
提高代码的健壮性
方法的优点:
1.使程序变得更简短清晰
2.有利于程序的维护(修改)
3.可以提高开发效率
4.可以提高代码的重用性
方法名的命名规则:
1.方法名必须以字母 下画线 $ 数字组成
2.不能以数字开头
3.方法名尽量由单词组成,如果有多个单词,第一个单词首字母小写,其它单词首字母大写
4.在同一个类中,方法名一般不能重名(方法重载除外)
方法的声明
语法
访问权限修饰符 其它修饰符 返回值类型 方法名(参数列表){
方法体代码
return 返回值;(如果返回值类型为 void 此行可省略)
}
注意1:方法声明(并实现)仅仅是声明了这个方法,方法中的代码不会被执行的
注意2:方法声明的位置为类的内部,其它方法的外部
形参与实参
方法定义处的为形参,形式上的参数,必须通过接受实际的值才能运算。
方法调用处的为实参:实际的参数。
形参和实参之间必须保持一致:参数的位置、参数的类型、参数的个数。
方法被调用时,用实参给形参赋值,这个过程叫传参
传参时需要注意的事项:实参的数量和类型必须和形参的数量和类型保持一致【相兼容的数据类型】
return的功能
将参数传出方法
结束方法(有结束的意思,就是一旦执行了return后面的代码便不会执行啦。)
return只能传一个值,如果想传多个数据,可以使用数组、对象、集合。
如果方法中有分支,必须保证每一个方法中都有return。
方法的内存展示
java将内存分为5块儿,分别是堆区,栈区,方法区,本地方法区,寄存器
栈区:那里面存放数据的特点是:先进后出,我们主要将加载时的局部变量和函数放在栈区,数据的特点是使用完立即释放。
堆区:存放的是实体(对象和数组),实体可以同时存放多个值,实体里面的变量如果不赋值。会有默认值,整型数据默认值是0,Boolean—false
了解:
方法区:程序运行中的二进制文件等(比如:.class)
本地方法区:存放外界引入的c,c++等的内容
寄存器:也可以称为计数器.
堆区中的数据会在某个时刻被释放-通过垃圾回收机制.
垃圾回收机制是通过一个线程控制的,由于这个线程的等级比较低,所以不会立刻执行,数据就
不会立刻释放.
方法在内存中的工作原理

1.程序开始执行后会先找到程序的入口main方法,main方法入栈,并执行main中的代码,给局部
变量value开辟空间,执行getMax方法
2.getMax方法入栈,在方法内部会进行运算,求出a和b的最大值.
3.getMax方法会将return后面接收到最大值通过方法的返回值传到main方法,并赋值给变量
value
4.当getMax执行完(可以是执行return或者执行方法的右大括号),会执行出栈操作
5.当main执行完,执行出栈操作,到此程序执行完成.
总结:通过内存展示我们可以更清晰的了解方法原理.
重载
同一个类中,多个方法,方法名相同,参数不同(参数的个数、位置、类型都叫不同)。
跟返回值无关。
java内部识别方法时,识别的是方法名,参数类型1_,参数类型2...
方法的递归
定义:在一个方法内,调用方法本身,称为方法的递归(注意和重载的区别)
说明:方法递归包含了一种隐式的循环,会重复执行某段代码,但是这种重复不需要使用循环语句来进行控制
案例斐波那契数列
class FibonacciNumber
{
public static void main(String[] args)
{
/*
斐波那契数列
1,2,3,4,5,6, 7, 8, 9,10,11,.....
1,1,2,3,5,8,13,21,34,55,89....
分析:
1.第一个位置和第二个位置上的数是固定的,都是1
2.第n个位置上的数 = 第n - 1个位置上的数 + 第n - 2个位置上的数
fun(1) = 1
fun(2) = 1
fun(3) = fun(2) + fun(1) = 1 + 1
fun(4) = fun(3) + fun(2) = fun(2) + fun(1) +fun(2)
fun(5) = fun(4) + fun(3) = fun(3) + fun(2) + fun(2) + fun(1) =
fun(2) + fun(1) + fun(2) + fun(2) + fun(1)
....
fun(n) = fun(n - 1) + fun(n -2)
*/
int result1 = fun(10);
System.out.println(result1);
}
//需求:报个数,获取在斐波那契数列中对应的数
public static int fun(int n) {
if(n == 1 || n == 2) {
return 1;
} else {
int num1 = fun(n - 1);
int num2 = fun(n -2);
int sum = num1 + num2;
System.out.println("num1=" + num1 + ",num2=" + num2);
return sum;
}
}
}
核心面试题
1.方法的传参过程是如何工作的
在调用方法的使用,在方面参数中写入实参,jvm运行时,会把实参赋值给形参。
2.return关键字的用法有哪些,举例说明
return; //结束方法 ,可以省略
return sum; //返回结果 sum ,结束方法
3.什么是方法的重载?举例说明
面试题
1.方法的传参过程是如何工作的
在调用方法的使用,在方面参数中写入实参,jvm运行时,会把实参赋值给形参。
2.return关键字的用法有哪些,举例说明
return; //结束方法 ,可以省略
return sum; //返回结果 sum ,结束方法
3.什么是方法的重载?举例说明
同一个类中,方法名相同,方法参数列表不同
本文解析Java方法的实质、组成要素及作用,探讨了如何简化代码、提高复用性和可读性,涉及方法名规则、重载、递归和实例应用。深入理解方法声明、参数传递与return的使用,以及方法在内存中的工作原理。
14万+

被折叠的 条评论
为什么被折叠?



