《Java黑皮书基础篇第10版》 第6章【笔记】

第六章

6.1引言

方法可以用于定义可重用的代码以及组织和简化编码

6.2 定义方法
修饰符  返回值类型  方法名(参数列表){
//方法体
}

方法头:指的是方法的修饰符+返回值类型+方法名+参数列表

修饰符:目前为止,暂时只使用static当作方法参数

返回值类型:方法有返回值(需要输出的值),那就填写其返回(需要输出)的数据类型;方法没有返回值,直接填写void

方法名:方法名和参数列表一起构成方法签名

参数列表

参数列表指明参数的类型、顺序和个数,也可以没有参数。

需要对每一个参数单独声明数据类型,不可以直接敲int a, b, c = 1;

定义在方法头中的参数被称为形参,使用真实的数据调用形参时,该数据被称为实参

方法体:是一个执行方法的语句合集。为了让带有返回值的方法可以打印出一个结果,必须使用return关键字,执行return后方法终止

6.3 调用方法

调用方法就是执行方法中的代码

当程序调用一个方法时,程序控制就转移到被调用的方法。当执行完 return语句或执行到表示方法结束的右括号时,被调用的方法将程序控制返还。

当尝试调用一个方法时,系统会生成一个活动记录/活动框架,该记录储存在堆栈中,堆栈是内存的一部分。

方法结束时,堆栈的活动记录也会被释放/销毁(也包括入口main方法)

6.4 void方法示例

void方法没有返回值,通常用system.out.println();来表示,调用void方法必须使用1条语句。

其实,void方法可以使用return,直接终止方法并将程序控制返还。使用return可以在方法调用出现预期之外的运行时错误、逻辑错误等时直接终止方法运行。

6.5 通过传值进行参数传递

调用带参数的方法时,将实参的值传递给形参;如果实参是变量,就将变量的值传递给形参

无论形参在方法内部是否改变,外部实参的值都永远不受影响,因为形参有自己独立于实参的储存空间

6.6 模块化代码

模块化代码就是将相关功能代码封装在一个方法中,调用者不关心方法内部究竟是如何实现的

模块化代码有2个优点

  1. 易于调试和维护。模块化代码把核心方法和main方法代码进行了分隔,如果计算出错,那么bug也就局限在方法内部,这会使逻辑更加清晰,可读性更强,调试范围更小
  2. 便于代码复用,其他的程序也可以直接使用该核心方法
6.7 示例学习:将十六进制数转换为十进制数
6.8 重载方法

方法头中,只有参数列表不同的方法被称为方法重载

如果定义了(int a, int b)和(double a, double b)两个重载的方法

  1. 使用(3, 4.5)依然可以匹配到第二个方法,原因是int被转型为double了
  2. 使用(3, 4)会调用第一个方法,虽然两个方法都可以匹配,但是方法一更佳精确,会优先匹配更加精确的方法

如果定义了(int a, double b)和(double a, int b)两个重载的方法

使用(1, 2)进行调用会导致编译错误,因为编译器无法判断哪个是最精确的匹配

6.9 变量的作用域

在方法中定义的变量就是局部变量,局部变量的作用域从定义处开始,一直到包含该变量的块结束为止

方法参数实际上就是局部变量

只要作用域不同,就可以在一个方法内不同的块内定义同名的局部变量

6.10 示例学习:生成随机字符
6.11 方法抽象和逐步求精

方法抽象是指,通过将方法用封装/信息隐藏的方式,用户在不知道方法是如何实现的情况下,就可以调用该方法

逐步求精或分治是指,将大问题逐步分析化解为小问题,编程时也要从程序框架逐渐写出完整的程序,使程序更加容易阅读,更加易于调试测试,更加方便团队协作(可以将每一个子问题分配不同成员,去调试,去合作)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值