前言:欢迎来到我的小窝,这里是一个新手程序员的起航之旅,记录着从“入坑”到“退坑”每一天……
- 计划任务
- 完成任务
任务描述:
java是一个面向对象oop的语言,最重要的三大特性
封装
,继承
,多态
,在初期
阶段,其实我们也使用到了面向对象的思想,但是我们不自知罢了,今天我开始
学习方法,方法我们从一开始学习java就在频繁使用,
一个类中方法的定义就是封装的体现
一个类方法的方法重载就是多态的一种体现
知识点归纳:
方法是什么?
方法是解决问题的办法,是实现需求和功能的代码段,
方法的作用?
- 提高代码复用性
如果我们没有去将这段代码制作成方法,那是不是每次比较两个数大小的 时候,我们都要重新再写一段逻辑去判断呢?但是封装成方法之后,每次遇 到这种需求时,只要调用这个方法就可以了呢! //需求 : 获取两个数中的较大值 public static int getMax(int x,int y){ return x>y?x:y; }
- 提高代码的安全性
因为这个判断逻辑是我们封装过的,是不会被别人随意篡改的,相对于暴露出 的代码是安全的.
方法的特点
方法是不调用不执行,并且不能嵌套,定义的位置是在类中,主(main)方法外
方法的定义
没有返回值的方法 修饰符 void 方法名(参数列表){ 方法体; }
有返回值的方法 修饰符 返回值类型 方法名(参数列表){ 实现功能的代码段; return 返回值; }
分析
返回值
: 方法执行完毕之后,是否需要得到一个结果(值),如果是定义为有返回值的方法并且返回这个结果,如果不需要,定义为没有返回值的方法
修饰符
: 访问权限修饰符 --> 先定义为 public static
返回值类型
:如果是有返回值类型的方法,定义的为返回的值的数据类型 --> return后面数据的类型
数据类型
:可以为任意类型
方法名
:区分方法的标识,调用方法需要根据方法名调用
return
: 1)提前结束方法 2)带出返回值,返回给方法的调用处在有返回值类型的方法中必须存在
void
: 代表这是没有返回值类型
封装方法的步骤
- 分析需求
- 返回值(需不需要返回数据给调用者)
- 参数(不能确定的参数)
- 方法名(见名知意)
方法的调用
- 赋值调用 数据类型 变量名 = 方法名(参数列表);
int max = getMax(100,200);//将返回值赋值给变量来接收 System.out.println(max);
- 输出调用 System.out.println(方法名(参数列表));
System.out.println(getMax(100,200));//打印语句直接输出
return关键字
- 提前结束方法
- 同时带出返回值–>返回给方法的调用处
- 有返回值类型的方法中必须存在return,而且必须带出返回值
- 没有返回值类型的方法中可以存在return,但是不出带出返回值,只能提前结束方法
方法的内存分析
本图出自优极限 殷姐
方法的重载
同一个类中的多个方法,方法名相同,参数列表不同
- 方法重载的特征
- 同一个类中的多个方法
- 方法名相同
- 参数列表不同|方法签名不同
- 参数个数不同
- 参数类型不同
- 不同类型的参数顺序不同
同一个方法可以实现多种可能性,我愿称之为方法的重载 //2个int public static int getSum(int i,int j){ System.out.println("2个int"); System.out.println(i+j); return i+j; } //3个int public static void getSum(int x,int y,int z){ System.out.println("3个int"); System.out.println(x+y+z); } //2个double public static void getSum(double d1,double d2){ System.out.println("2个double"); System.out.println(d1+d2); }
- 重载方法的调用
1.方法的重载与方法的修饰符无关
2.方法的重载与方法的返回值类型无关
3.方法的重载与参数名无关
方法的递归
自己调用自己
优缺点
:
- 优点 : 简化代码结构
- 缺点 : 容易造成内存的溢出
- 关于递归: 运行效率慢,吃内存。一般在企业开发中用不到。
- 循环的效率远远高于递归。
- 递归解决效率慢的方式:
- 将一些重复计算的中间结果 暂存起来
- 使用尾递归 (不是所有的递归都可以写尾递归)
结构
:
- 递归头: 停止自己调用自己的条件
- 递归体: 自己调用自己
- 临界条件 : 递归头: 停止自己调用自己的条件
- 递归前进段 : 不停的自己调用自己
- 递归后退段 : 将结果返回上一层
本图出自优极限 殷姐//需求 : 求某个数的阶乘 5!=5*4!=5*4*3*2*1 //返回值 : int //参数 : int i public static int recursion(int i){ if(i==1){ return 1; } return i*recursion(i-1); }
这是今天的思维导图:
总结:
今天是愉快的一天……