java 方法的用法、重载、及递归

Java中的方法就是一个代码片段类似与c语言中的函数,学习方法时可以结合c语言中的函数来理解

方法的特点

  1. 能够模块化的组织代码。(当代码规模比较复杂的时候).
  2. 做到代码被重复使用, 一份代码可以在多个位置使用。
  3. 让代码更好理解更简单,使代码看起来更加简单明了。
  4. 直接调用现有方法开发, 不必重复造轮子。

方法的用法

基本语法
方法定义:
public static 方法返回值 方法名称([参数类型 形参 …]){
方法体代码;
[return 返回值];
}
方法调用:
返回值变量 = 方法名称(实参…);
代码示例:
下面定义方法及调用方法;
方法add实现计算两个数的和;
该方法是一个有返回值的方法,且返回值为整型。

class Test {
public static void main(String[] args) {
	int a = 10;
	int b = 20;
	int ret = add(a, b);         // 方法的调用
	System.out.println("ret = " + ret);
}
  // 方法的定义
public static int add(int x, int y) {
	return x + y;
	}
}
// 执行结果
ret = 30

注意:

  1. 方法定义时, 参数可以没有. 每个参数要指定类型。
  2. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void。
  3. 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”。
  4. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可。
  5. Java 中没有 “函数声明” 这样的概念。
  6. 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行。
  7. 当方法被调用的时候, 会将实参赋值给形参。
  8. 参数传递完毕后, 就会执行到方法体代码。
  9. 当方法执行完毕之后(遇到 return 语句, 就执行完毕), 回到方法调用位置继续往下执行。
    10.一个方法可以多次调用且互不干扰。

方法的重载

重载要解决的问题:

class Test {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int ret = add(a, b);
		System.out.println("ret = " + ret);
		double a2 = 10.5;
		double b2 = 20.5;
		double ret2 = add(a2, b2);
		System.out.println("ret2 = " + ret2);
	}
	public static int add(int x, int y) {
		return x + y;
	}
}
// 编译出错
Test.java:13: 错误: 不兼容的类型: 从double转换到int可能会有损失
double ret2 = add(a2, b2)

重载可以简单的理解为:同一个方法名字, 提供不同版本的实现, 称为方法重载。
重载的规则:

  1. 针对同一个类。
  2. 方法名相同。
  3. 方法的参数不同(参数个数或者参数类型)。
  4. 方法的返回值类型不影响重载。

代码示例:

	 public static int add(int x, int y) {
		return x + y;
	}
	public static double add(double x, double y) {
		return x + y;
	}
	public static double add(double x, double y, double z) {
		return x + y + z;
	}
}

注意:当两个方法的名称和参数都相同时,不构成重载。

class Test {
	public static void main(String[] args) {
		int a = 10;
		int b = 20;
		int ret = add(a, b);
		System.out.println("ret = " + ret);
	}
	public static int add(int x, int y) {
		return x + y;
	}
	public static double add(int x, int y) {
		return x + y;
	}
}
// 编译出错
Test.java:13: 错误: 已在类 Test中定义了方法 add(int,int)
public static double add(int x, int y) {

函数的递归

递归的含义:
一个方法在执行过程中调用自身, 就称为 “递归”。
递归的要点:

  1. 递归有一个趋近于终止的条件。
  2. 调用自己本身。
  3. 本质是将大问题化为小问题。

递归相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式.
例如, 我们求 N!
起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件.
递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N-1)!
思路图:
在这里插入图片描述

代码块:

public static int fac(int n) {
	if(n==1) {
	return 1;
	}
	return n*fac(n-1) ;
}

小结:
递归是一种重要的编程解决问题的方式.
有些问题天然就是使用递归方式定义的(例如斐波那契数列, 二叉树等), 此时使用递归来解就很容易.
有些问题使用递归和使用非递归(循环)都可以解决. 那么此时更推荐使用循环, 相比于递归, 非递归程序更加高效.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值