【Java基础学习】【笔记】Day04

【Java基础学习】【笔记】Day04,第1张

 

一、方法 含义

在程序中储存特殊功能的代码块

好处
  1. 提升代码重复利用率减低工作量。
  2. 提高代码的独立性,降低耦合性。
特点
  1. 核心特点:不调用不执行。
  2. 方法属于调用结构,有两个关键性动作:
    1. 传参:方法与方法之间是互相独立的,自定义方法无法获取到调用者方法内的数据,所有需要通过传递参数的方式来实现。
      1. 实际参数(实参):调用方法时,有具体参数的。
      2. 形式参数(形参):声明方法时的参数,没有具体数值,只是数据的变量声明。
    1. 返回方法与方法间是独立的,调用者无法使用到自定义方法中的数据,需要结束方法的时候通过返回值进行返回使用。
声明格式

修饰符 返回参数类型 方法名(形参类1 形参名2,形参类2 形参名2。。。){

方法体语句;

return 返回值;}

名词解释
  1. 修饰符:给方法在内存中添加不同的加载或执行特点,暂不涉及,固定使用public static。
  2. 返回值类型:方法返回的数据类型
    1. 8种基本类型
    2. 引用类型
    3. void-空
  1. 方法名:简明知意
  2. 形参:方法之间由于作用域不同无法直接调用数据,所以调用方法需要通过形参将数据发送至被调用方法。
    1. 基本数据类型
    2. 引用类型
  1. 方法体语句:特殊功能代码块
  2. return:控制语句
    1. 结束方法
    2. 如果后面有返回值,结束的同时返回返回值给调用者方法。
  1. 返回值:方法的结果数据。
方法申明前的两个明确 返回类型
  1. 无返回类型填写void
  2. 基本类型
  3. 引用类型
形参列表
  1. 基本类型
  2. 引用类型
方法的调用
  1. 如果方法属于对象,需要通过对象名进行调用。
  2. 如果方法属于类,通过类名调用。
  3. 如果调用同一个类中的方法,可以直接调用。
调用格式
  1. 单独调用(直接调用)
    1. 方法名(实参);
  1. 输出调用(打印调用)
    1. System.out.println(方法名(实参));
  1. 赋值调用
    1. 数据类型 变量名 = 方法名(实参);
例题
//通过方法判断两个整数是否相等

class Day04Demo{
	public static void main(String[] args){
		System.out.println(daXiao(10,10));
	}
	public static boolean daXiao(int a ,int b){
		boolean duiBi = a == b;
		return duiBi;
	}
}
//通过方法计算1+2+3+......+100的值

class Day04Demo{
	public static void main(String[] args){
		System.out.println(num());
	}
	public static int num(){
		int shuZhi = 0;
		for (int i = 1;i <= 100;i++){
			shuZhi += i;
		}
		return shuZhi;
	}
}
void关键字

含义

无返回值,当没有返回值时,返回位置也不可以空着需要使用void占位。

注意事项

  1. 返回值为void时,方法调用格式只能选择单独调用(直接调用)。
  2. 不是void时,推荐使用赋值调用。
  3. 若返回值类型为void,方法体后面的return关键字可以不写。
方法重载(Overload) 定义

在同一类(或子父类继承关系)中,出现了方法名相同,形参不同的现象。

方法重载的前提条件
  1. 必须在同一个类(或者子父类继承关系)中
  2. 方法名必须相同
  3. 方法形参配置列表不同
    1. 形参个数不同
    2. 形参数据类型不同
    3. 形参数据类型顺序不同
注意事项

调用重载时,具体执行那个取决于实参个数和数据类型

方法的递归 含义

方法内部调用自身的现象

分类
  1. 直接递归
  2. 间接递归
注意
  1. 如果使用递归,就需要给方法添加递归的限定条件,否则会发生栈内存溢出。
  2. 即使含有递归的限定条件,也不要将递归层数过多,否则会发生栈内存溢出。
好处

在实际场景使用for或while不便于 *** 作,可以通过方法的递归进行简化。

例如:便历多级文件夹啊。

例题

递归的弊端

/*
  需求:
  		有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问指定月份的兔子对数为多少? 
  
  规律:
  		第一个月:1
  		第二个月:1
  		第三个月:2
  		第四个月:3
  		第五个月:5
  		第六个月:8
		第七个月:13
		第八个月:21
  		...
  
  		规律:从第三个月开始,每个月的兔子对数是前两个月的兔子对数之和
           第一个月和第二个月的兔子对数都是1
*/
class Demo {
	public static void main (String[] args) {
		long num = tuZi(3);
		System.out.println("兔子的总对数:" + num);
	}
	public static long tuZi(int month){
		if (month == 1 || month == 2){
			return 1;
		}
		return tuZi(month - 1) + tuZi(month -2);
	}
}
//兔子生兔子——for动态规划

public static long tuZi(int month){
		long month1 = 1;
		long month2 = 1;
		long month3 = 0;
		if (month == 1 || month == 2){
			return 1;
		}
		for (int i = 3;i <= month;i++){
			month3 = month1 + month2;
			month1 = month2;
			month2 = month3;
		}
		return month3;
	}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/874507.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存