最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

java 系列教程:(4)方法

[复制链接]
跳转到指定楼层
楼主
发表于 2018-1-22 15:43:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
1 认识方法#
1.2 什么是方法?
方法就是C语言里的函数,是一个独立的功能模块。
1.3 为什么需要方法?
每个方法都有自己独立的功能,可以将功能代码写在一个方法里,然后调用该方法实现该功能,可以多次调用该方法,提高代码的复用性;还可以减少代码的耦合度。
例如:
比如一个计算器,有加减乘除功能,可以把加减乘除的实现都变成一个方法。当我们输入1 + 2 的时候,系统就会调用加功能的方法,进行加运算;同理当我们输入3+4 的时候,系统还会调用加功能的方法,进行加运算;这样,就达到了代码的复用。
假设有一天需求改变了,加的功能要保留两位小数,只要改实现加法的这个方法就可以了;若刚刚没有把加这个操作分割开,那么只能在对所有代码进行修改,不但找起来麻烦,而且在程序大了之后就会出现很大的问题。

2 方法的定义(声明)#
定义方法的语法格式:

file

修饰符:参考属性定义语法里的修饰符
方法返回值类型:返回值类型可以是基本类型也可以是引用类型(讲数组的时候讲)。
如果声明了方法返回值类型,则方法体内必须有一个有效的return语句,该语句返回一个变量或表达式
如果一个方法没有返回值,则必须使用 void 来声明没有返回值
形参列表:可有可无。

1)没有返回值类型的方法定义

file

file

file

file

file

注意:
不能在方法内定义方法,也就是说,定义方法的时候,不能方法套方法。

如果定义的方法有返回值,则方法返回值结果应该返回给调用者,交由调用者处理。

要想定义(声明)一个方法,需要确定什么条件?
1、你定义的这个方法,需要有返回值吗?如果需要返回,返回什么类型的返回值?
2、你定义的这个方法,需要哪些参数传进这个方法中,才能应用该方法?
2 如何调用已定义的方法?

file

如果方法定义的时候没有实参,则调用时不用写实参。
如果方法定义时带有形参,则调用时一定要写,并且实参的数据类型及顺序必须与形参一致。

3 方法参数传递#
什么是栈内存?
在方法中定义的一些基本类型的变量和对象的引用变量都是在方法的栈内存中分配。当在一段代码块中定义一个变量时,java就在栈中为这个变量分配内存空间,当超过变量的作用域后,java会自动释放掉为该变量分配的内存空间,该内存空间可以立刻被另作他用。
栈内存速度快,主要用作程序执行。

什么是栈?

file

java里的方法是不能独立存在的,需要被调用才能执行。
如果声明方法时包含了形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值被称为实参。
方法的参数传递:值传递,就是将实际参数值的副本传入方法内,而参数本身不会受到任何影响。
方法参数传递规则

在 Java 中的方法参数传递中,基本类型传值,对象类型传地址(讲数组的时候讲)

示例:
只适用于传参传的是基本类型

file

file

4 方法的重载#
方法的重载的关键在于“方法名相同,参数表不同”。那究竟怎样的参数表算是“不同”呢? 以下几种情况都可以认为是参数表不同:
 参数个数不同。例如 void study()和 void study(int n)
 参数类型不同。例如 void study(int n)和 void study(double d)
 参数类型的排列不同。例如 void study(int n, double d)和 void study(double d, int n)
跟方法的返回值类型没有关系。

file

file

为什么要用重载
我们平时说话这么说“洗(衣服),洗(菜),洗(衬衫),洗(袜子)……”方法名字就叫洗得了,没必要为了一个参数而起一个新的名字。不然就成了这样了“以洗衣服的方式洗(衣服), 以洗菜的方式洗(菜)……”

System.out.println() 方法也是用的方法重载,可打印各种类型的数据。

file

file

file

按快捷键 Alt + shift + m,打开抽取方法弹出框

file

file

file

file

开启debug 模式
1)点击小爬虫图标
2)右键 Java程序内的任意位置 → Debug As → Java Application

然后按F6移动到下一行 ,
如果碰到方法,则按F5进入方法体,
如果想跳出方法体则按F7,
如果想执行到下个断点后执行完成,按F8。
在调试过程中可以 看变量的值

file

调试快捷键
F5——进入:移动到下一个步骤,如果当前行有一个方法调用,该控件将会跳转到被调用方法的第一行执行。
F6——跳出:移动到下一行。如果在当前行有方法调用,那么会直接移动到下一行执行。不会进入被调用方法体里面。
F7——返回:从当前方法中跳出,继续往下执行。

F8——移动到下一个断点处执行。

如何看打了几个debug断点

file

如何取消断点
1、鼠标点掉
2、在BreakPoints 选项卡中的 复选框勾掉
3、右键BreakPoints 选项卡中 → remove all
6 递归方法
一个方法体内调用它本身,被称为方法递归,方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。
方法自己调自己。

递归一定要向已知方向递归,也就是说递归要有出口,否则就是死循环。
递归需要消耗部分内存。
递归输出3,2,1,当为1时,为递归出口
printInfo(1) 输出 1
printInfo(2) 输出 2
printInfo(3) 输出 3

file

file

file

file

file

file

file

由于递归方法理解程序比较难,建议用循环代替递归方法处理。

递归习题:

斐波那契数列,又称黄金分割数列,指的是这样一个数列:
0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:
F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)

n = 20;用递归实现斐波那契数列。

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海牛部落-海牛博士,http://hainiubl.com/topics/180
楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-8 05:08

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表