java的方法

本文解析Java方法的实质、组成要素及作用,探讨了如何简化代码、提高复用性和可读性,涉及方法名规则、重载、递归和实例应用。深入理解方法声明、参数传递与return的使用,以及方法在内存中的工作原理。

方法

方法的概念

​ 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.什么是方法的重载?举例说明
同一个类中,方法名相同,方法参数列表不同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值