Java关于方法的总结

方法

1.什么是方法

Java 中的方法类似于 C 语言中的函数。方法(method)一定是和 类 关联在一起的。方法存在的意义:

  1. 是能够模块化的组织代码
  2. 做到代码被重复使用,一份代码可以在多个位置使用
  3. 让代码更好理解更简单
  4. 直接调用现有方法开发,不必重复造轮子
    Java 中的方法的定义位置,可以放在调用代码的上面,也可以放在下面。 Java 中也没有“函数声明”这样的说法。

2.方法的定义

  1. 方法定义时, 参数可以没有. 每个参数要指定类型
  2. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void
  3. 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”。
  4. Java 的方法必须写到类里面
//方法定义
public static 方法返回值 方法名称 ([参数类型 形参 ...]) {
	方法体代码;
	[return 返回值];
}

3. 形参 和 实参 的关系

C 语言中 形参 是 实参 的一份拷贝
对于 Java 中同样适用。
Java 是没有指针的,但是有引用,引用相当于低配指针
Java 中的基本类型(int , float, double) 都不是引用
可以借助 数组 来完成, Java 中的数组是引用类型
数组是引用类型,此时方法内部对数组的操作是能够影响到方法外部的。

class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        swap(a, b);
        System.out.println("a = " + a + " b = " + b);
	}
    public static void swap(int x, int y) {
        int tmp = x;
		x = y;
		y = tmp;
	}
}
// 运行结果
a = 10, b = 20

原因是刚才的代码,没有完成数据的交换
对于基础类型来说,形参相当于实参的拷贝,即 传值调用

4.没有返回值的方法

方法的返回值是可选的,有些时候可以没有的。
例:

class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        print(a, b);
	}
    public static void print(int x, int y) {
        System.out.println("x = " + x + " y = " + y);
	}
}

5.方法的重载

重载主要有两种体现形式

  1. 方法名字相同,参数类型不同
  2. 方法名字相同,参数个数不同
    前提条件,这两个方法要在同一个类中。
    两个方法是否构成重载和方法的返回值类型无关。
    像有些方法,参数不同,但是方法体里面的执行逻辑是完全一样的,这时可以使用重载来处理,但是没必要,我们还有更好的方法,“泛型”
    例:
class Test {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        int ret = addInt(a, b);
        System.out.println("ret = " + ret);
        double a2 = 10.5;
        double b2 = 20.5;
        double ret2 = addDouble(a2, b2);
        System.out.println("ret2 = " + ret2);
	}
    public static int addInt(int x, int y) {
        return x + y;
	}
    public static double addDouble(double x, double y) {
        return x + y;
	}
}

6.方法的递归

一个方法在执行过程中调用自身, 就称为 “递归”.
递归相当于数学上的 “数学归纳法”, 有一个起始条件, 然后有一个递推公式。

例如, 我们求 N!
起始条件: N = 1 的时候, N! 为 1. 这个起始条件相当于递归的结束条件. 递归公式: 求 N! , 直接不好求, 可以把问题转换成 N! => N * (N - 1)!

例:

public static void main(String[] args) {
    int n = 5;
    int ret = factor(n);
    System.out.println("ret = " + ret);
	}
public static int factor(int n) {
    if (n == 1) {
	return 1; 
	}
	return n * factor(n - 1); // factor 调用函数自身
}
// 执行结果 ret = 120
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章