一、概述

方法是指人们在实践过程中为达到一定目的和效果所采取的办法、手段和解决方案。

所谓方法,就是解决一类问题的代码的有序组合,是一个功能模块。编程语言中的方法是组合在一起来执行操作语句的集合。例如,System.out.println 方法,该系统实际上是为了在控制台上输出的消息执行多条语句。可以将方法理解为“CD机”即放入不同的碟片出现不同的歌曲;或“榨汁机”即放入不同的水果榨出不同的果汁。

方法就是 给能够解决问题的多行代码取了一个名字的功能块 ,方便我们多次使用。方法的作用:

1)、main方法过于臃肿

2)、重复执行的代码块 命名,方便重复使用

3)、方便自上而下分解问题

4)、方便维护代码

现在,我们将学习如何定义自己的方法有或没有返回值,使用即调用带或不带参数,使用相同的名称重载方法的方法中。

二、定义(method define)

2.1 声明格式:

1)、访问修饰符:方法允许被访问的权限范围;

2)、返回值类型:如果方法不返回任何值,则指定为void;如果方法具有返回值,

则需要指定返回值的类型,并且在方法体中使用 return语句返回值;

3)、方法名:定义方法的名字,必须使用合法的标识符,见名知意。

4)、形参列表:参数可以有多个,多个参数间以逗号隔开,每个参数由参数类型和参数名组成,以空格隔开。

2.2 现有格式:

注意: 方法只能定义在类中;同时方法不能嵌套;方法编写位置与使用无关。

2.3 分类

根据方法是否带参、是否有返回值,可以将方法分为:

2.4 void 关键字

一个 void方法,它不返回任何值。

2.5 return关键字

return 为 跳出方法 或 返回值。

注意:在一个作用域内 return 之后不能再存在代码

return语句:

①return语句可以出现在任何(有返回值和没有返回值)方法中

②return语句 在没有返回值的方法中,用来提前结束方法

③return语句 在有返回值的方法当中,有两个作用:提前结束方法,送出结果。

④一个方法只能执行一条return语句

⑤在一定会被执行的return语句后,写的语句为不可达语句,程序自动检测这种语句,永远不会被执行到,报错。

⑥在循环中无条件的break后写语句,会出现不可达语句

⑦在死循环(没有break来结束的死循环)后写语句,会出现不可达语句

2.6 思考角度

编写一个方法时,请思考这四个方面:

1)、确定方法的功能

2)、确定方法的名称

3)、此方法能否独立运行,不能独立,需要外界数据参与运算,确定形参。

4)、此方法完成后,其结果是否直接影响调用处的后续操作,如果影响,确定返回类型,不影响则为 void

2.7 签名(signature)

方法的签名,确保在一个类中的唯一性。方法的签名只看 方法名和形参

( 类型 个数 和顺序) ,与修饰符 返回类型 和形参名无关。

三、调用(method invoke)

3.1 格式

方法定义完成后,若要使用,必须调用它。在调用时,调用的控制权由方法调用处转移到方法中,方法遇到 return 或者 }结束时,将调用权交还给调用处。也就是”从哪里来到哪里去”的套路。

如调用以上方法:

①如果该方法返回 void,则调用该方法必须是一个语句,不能使用变量接收。

②如果该方法具有返回类型,返回一个值,调用该方法通常被视为一个值。

总结如下:

[接收变量=]方法名([实参列表])

①void 没有返回值,不能使用接收变量。

②存在返回值,接收变量或匿名接收(输出或者调用)

3.2 类型兼容

在调用方法时,形参与实参,接收类型与返回类型和返回值类型应该保持兼容。

①形参>=实参

②接收类型>=返回值类型>=return类型

3.3 值传递

当使用一个参数调用一个方法时,参数的值拷贝给参数,即拷贝副本。这被称作按值传递。

四、重载(method invoke)

一般来说,功能点相同的方法才适合使用重载,重载必须满足如下要求:

①必须是同一个类

②方法名必须相同

③参数列表不同

注意:方法重载与返回值无关。

参数列表不同:

参数的个数不同。

参数的对应的数据类型不同。

参数的顺序不同(不同类型的可以交换位置)

五、递归结构

递归是一种常见的解决问题的方法,即把问题逐渐简单化。 递归的基本思想就是 自己调用自己 ”,一个使用递归技术的方法将会直接或者间接的调用自己。利用递归可以用简单的程序来解决一些复杂的问题。比如:大多数排序使用的就是递归算法。

递归结构包括两个部分:

① 定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环。

② 递归体。解答:什么时候需要调用自身方法。

递归的缺陷:

简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多。所以再使用时要慎重。

注意:任何可用递归解决的问题也能使用迭代解决。但递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;

在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。

乐字节Java编程之方法、调用、重载、递归的更多相关文章

  1. 乐字节Java编程语言发展,面向对象和类

    大家好,上次我们讲过了乐字节Java编程之方法.调用.重载.递归,接下来我们将会进入到Java封装的内容.Java编程语言发展,面向对象和类. 一.编程语言的发展 机器语言——直接由计算机的指令组成, ...

  2. 乐字节Java继承|方法重写、super和final关键字

    大家好,乐字节的小乐又来了,上一篇是:乐字节Java|JavaBean.继承与权限修饰,也是属于Java继承的,今天继续Java继承. 一. 方法的重写 父类不满足子类的要求,按需改写.注意 方法签名 ...

  3. 乐字节Java反射之三:方法、数组、类加载器和类的生命周期

    本文承接上一篇:乐字节Java发射之二:实例化对象.接口与父类.修饰符和属性 继续讲述Java反射之三:方法.数组.类加载器 一.方法 获取所有方法(包括父类或接口),使用Method即可. publ ...

  4. 乐字节Java|封装JavaBean、继承与权限修饰

    本文继续讲Java封装.上一篇:乐字节Java|GC垃圾回收机制.package和import语句 这次讲述JavaBean.继承与权限修饰 一. 封装javaBean 封装(Encapsulatio ...

  5. 乐字节Java|GC垃圾回收机制、package和import

    本文接上一篇:乐字节Java|this关键字.static关键字.block块.本文是接着讲述JavaGC垃圾回收机制.package 和 import语句. 一.GC垃圾回收机制 GC全名:Garb ...

  6. 乐字节Java反射之四:反射相关操作

    大家好,乐字节小乐继续为Java初学者讲述Java基础知识.上次说到乐字节Java反射之三:方法.数组.类加载器,这次是Java反射之四:反射相关操作 1.操作属性 //1.获取Class对象 Cla ...

  7. 乐字节Java反射之一:反射概念与获取反射源头class

    一.Java反射机制概念 “程序运行时,允许改变程序结构或变量类型,这种语言称为动态语言”,如Python, Ruby是动态语言:显然C++,Java,C#不是动态语言,但是JAVA有着一个非常突出 ...

  8. 乐字节Java反射之二:实例化对象、接口与父类、修饰符和属性

    大家好,小乐继续接着上集:乐字节Java反射之一:反射概念与获取反射源头Class 这次是之二:实例化对象.接口与父类.修饰符和属性 一:实例化对象 之前我们讲解过创建对象的方式,有new .克隆.反 ...

  9. 乐字节Java变量与数据结构之二:Java常量与变量

    大家好,小乐又来给大家讲述Java基础知识.上次说了乐字节Java变量与数据类型之一:Java编程规范,关键字与标识符,这次将接着往下说,谈谈Java常量与变量. 1.常量 1).定义 在程序执行的过 ...

随机推荐

  1. The Preliminary Contest for ICPC China Nanchang National Invitational

    目录 Contest Info Solutions A. PERFECT NUMBER PROBLEM D. Match Stick Game G. tsy's number H. Coloring ...

  2. windows下java环境变量标准配置

    配置步骤 1.“此电脑”右键,选择“属性”,点击“高级系统设置”,点击“环境变量”. 2.在“系统变量”这一栏,点击“新建”,变量名:JAVA_HOME,变量值:C:\Program Files\Ja ...

  3. OpenFOAM 中边界条件的设定【转载】

    转载自:http://blog.sina.com.cn/s/blog_a0b4201d0102v7jt.html 用习惯了FLUENT的操作界面,再使用OpenFOAM就会觉得非常繁琐.遇到的第一个问 ...

  4. Result window is too large, from + size must be less than or equal to [10000]

    使用sql插件执行如下语句的时候报错http://10.127.0.1:9200/_sql?sql=select * from test limit 1000000 错误信息:{"error ...

  5. Python 死循环

    while True: try: x=int(input("Please enter a number:")) break except ValueError: print(&qu ...

  6. These dependencies were not found: *!!vue-style-loader!css-loader?

    在vue中使用less首先要下载依赖:npm install less less-loader --save-dev 下载好之后就可以.vue文件中使用lang="less"和@i ...

  7. The implementation of iterators in C# and its consequences (part 1) Raymond Chen

    Likeanonymous methods, iterators in C# are very complex syntactic sugar. You could do it all yoursel ...

  8. 【Oracle】创建用户及设定权限

    ; grant create session to ufo; grant create tablespace to ufo; grant create table to ufo; grant drop ...

  9. SQL-W3School-函数:SQL FORMAT() 函数

    ylbtech-SQL-W3School-函数:SQL FORMAT() 函数 1.返回顶部 1. FORMAT() 函数 FORMAT 函数用于对字段的显示进行格式化. SQL FORMAT() 语 ...

  10. ObjectAnimator简单示例

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...