• Java-方法的详解( 看完之后,我不允许还有人不懂!)


    一、什么是方法

    方法和C语言的函数的功能是一样的,但在具体使用上,还是有区别的,区别在定义里面说。
    对于方法,在我的脑海中我想象出了生活中的情景去理解它,我将方法比作了思路去进行了理解。:
    在我高中时期,当我们学生在做完一套题时,学生有不会的题,就去问自己班的老师去,其中有一道题,老师被问了好多遍,老师就想这个题这么多学生问,可能还有的同学不会i,没有来问,我就去课上讲一下这道题的思路,让不懂的同学都听一下,此时老师把这道题的思路公布出来,讲给所有的同学听,这样就少讲了好多遍,不用单个单个的再给学生重复讲了,提高了效率。
    在编程的世界中,也有这样的事情发生,如果有一段代码需要被频繁的使用,那么就把这一段代码写成一个方法,这个方法就是我上面说的老师讲的这道题的思路,在需要这一段代码时,只需要调用这个方法就可以,不用再重复编写代码。
    对于方法的理解,同志们应该多做一些练习,才能更深刻的理解,方法被创造出来的意义。

    二、方法定义

    方法是由哪几部分组成的呢?就像一道题的思路,思路由开头,中间和结尾组成。
    方法由修饰符+返回值类型+方法名称+参数类型+方法体代码+return 返回值组成,如果返回值类型是void,就不需要return 返回值。

    定义方法时,有以下注意事项:
    1:对于返回值类型,如果方法不需要返回一个值,返回值类型就是void,void表示的是无类型,中间的字母o,可以理解为空的意思,空就代表没有。具体一点可以理解为:返回值类型就是数据类型,可以向内存申请空间,如果方法不需要返回一个值,我为什么还要申请空间呢?直接给void,很合理,如果方法要返回一个值,就给定合适的数据类型用来接收就可以。我个人理解的这里方法返回的值和给定的数据类型和C语言中的地址和指针类型的变量是相似的,在C语言里面,我是这样理解地址和指针类型的变量的,地址我想象成了一个魂,孤魂野鬼的魂,它必须要找到一个躯壳,来存放自己的魂,躯壳要和自己的魂相对应,如果是一个人类的魂,要找到人类的躯壳,如果是狗狗的魂,要找到狗狗的躯壳里面,所以地址要存放到指针类型的,变量里面时,要找对数据类型,如果是整型的地址,要放到整型的指针变量里面,如果是浮点型的地址,要放到浮点型的变量里面,所以方法返回的值,应该方法应该使用合适的数据类型的变量接收。
    2: 方法的名字要使用小驼峰命名:例如isPrime,第二个单词的首字母要大写,大驼峰的意思是,每一个单词的首字母大写,例如:TestDemo
    3: 如果参数列表中没有参数,就什么都不写,如果有参数,参数与参数之间使用逗号隔开。
    4: 方法必须写在类当中,写在类外面会出错,这里将类比作教室,方法比作学生,如果学生在上课期间跑出教室,那学生就犯错了。
    5: 方法不能嵌套定义,意思是不能在一个方法里面,定义一个新的方法,如果要定义一个方法,必须要在方法外定义,方法与方法之间是平等的,将方法比作学生,学生不可能生出学生,这是没有逻辑的。

    三、方法调用

    方法调用就是去使用方法,如何去使用方法呢?,方法名代表方法,就像我们的名字就可以代表我们个人,写下方法名再将需要传给方法的值,传给方法,等待编译到这行代码时,就会使用这个方法,调用这个方法。
    传给方法的值是方法的实参,用来接收传进来的值的是形参,在这里可以将方法比喻成一个加工厂,原材料就是实参,要将原材料送进厂子里去,就要需要地方来存放这些原材料,这个地方就是形参,最后加工厂加工出的产品可以交出来,也可以不交出来,不交出来,就无法使用这个产品,只有交出来,才能使用。

    对实参和形参的认识:
    对于基本类型来说:
    形参只是实参的一份临时拷贝,对形参的修改不能改变实参的值。
    实参和形参保存在内存空间的位置不一样。
    我将实参和形参这两者的关系,想象成了我生活中的一个情景,我将实参比作在高中时期,一个原装的卷子,这个卷子是老师手写的,要去复印好多份,此时形参是复印出的卷子,如果此时有一个学生将复印的卷子给扔掉了,那么那张手写的卷子会不会受到影响,答案是不会的。
    对于引用类型: 学到数组再讲!

    四、方法重载

    1、什么是方法重载?

    方法重载的意思是方法名同时被多个方法所使用,也就是一个人的名字被很多人使用,世界上不可能只有一个人叫马云。

    2、为什么会出现方法重载?

    这里可以想象一个公厕可以由很多人使用,如果一个公测只能由一个人使用,那得需要建多少公厕,又费时间又费金钱。
    在我们编写代码时,是一个道理,为了提高我们的效率,会定义很多方法,如果一个方法对应一个方法名,那需要记很多方法名,这很费劲,所以就规定一个方法名可以由很多方法共用。

    3、被称为方法重载的必要条件是什么?

    1. 方法名必须相同
    2. 这里可以想象世界上不可能有两个一摸一样的人,即使他们的名字相同,但总会有差异,就像马云和小马云,虽然他们的名字一样,但是他们的身高,智力等等,这些一样吗?肯定是不一样的,对于方法的参数列表也是一样的,方法的参数列表必须不相同,参数列表不相同包括为:参数个数不同+参数次序不同+参数的类型不同,只要有一个不同,就是参数列表不同,也就是马云和小马云他俩身高不一样,这一点就说明了,他俩是不相同的,即使名字是相同的。
    3. 与返回值的类型是否相同无关
      一二点是成为方法重载必须遵循的条件,缺一不可,就像是方法重载是一个学习好的人,你要成为学习好的人,你必须各科成绩都好,才会成为学习好的人,只要有一科不好,就不是学习好的人,你必须满足前面两点,才会称为方法重载,第三点就像是高中的体育课,这门的成绩不会决定你是学习好的学生还是学习不好的学生,即使只有返回值的类型不同,参数列表都相同,仍然不能称为重载。

    4、编译器是如何识别出相同名字的方法的呢?

    成功在编译器上编写了两个名字相同的方法,编译器是如何识别出这两个不一样的方法的呢?是使用方法签名,进行标识出不同的方法来的。
    方法签名是由:方法全路径名+参数列表+返回值类型,这三者构成。

    五、递归

    1、什么叫递归?

    一个方法在执行过程中调用自己的过程,叫做递归。
    对于递归这个过程,我想象出了一个生活中的例子:
    我正在家中写一份数学作业,然后妈妈叫我去买一瓶酱油,在去的路上,我在楼下玩了一会。现在想:这三件事完成的顺序是什么?我肯定是先玩完,然后去买到酱油回家,最后再完成作业。也就是:写作业->买酱油->玩,玩完->买完酱油->写完作业,这可以形成一个完成的闭环。
    递归的过程就是类似于这个样子:进入方法内部,再调用自己这个方法,再次进入方法内部,再次调用自己这个方法,进入方法内部,遇到结束条件,不再调用自己,执行完后面的代码,返回上一个方法内部,执行完后面代码,返回上一个内部,执行完后面的代码,方法执行完毕。

    2、使用递归的思想是什么?(为什么要使用递归)

    对于这递归思想的理解,我又想到了生活中的例子:
    就比方说吃一大碗米饭,不可能一口吃完,那就要分好几口才能吃完,直到吃完为止。
    递归和这个一个道理,原问题太复杂,不能一下子解出来,那就把这个原问题拆分,拆成一个与原问题相似,但规模较小的问题,如果还不好解开,就一直拆,直到能够很容易解开为止。

  • 相关阅读:
    Docker 安装RabbitMq
    miners lamp
    数据采集与大数据架构分享
    代码随想录算法训练营008|151.翻转字符串里的单词,344.反转字符串,541.反转字符串II,剑指Offer 05.替换空格
    自主设计,模拟实现 RabbitMQ - 实现 拒绝/否定 应答机制
    MySQL 开启配置binlog以及通过binlog恢复数据
    leetCode 674. 最长连续递增序列 动态规划 / 贪心策略
    用于神经网络的FLOP和Params计算工具
    计算机操作系统 第二章:进程 的描述与控制(2)
    字节跳动秋招提前批高频面试问题汇总!(内附答案!)
  • 原文地址:https://blog.csdn.net/weixin_53908084/article/details/126072193