Java方法
菜菜不恰菜 人气:0一、方法
方法是什么?
在Java中方法就相当于C语言中的函数。因为有时候我们需要一块代码重复使用,这时候就可以使用方法。
为什么要用方法?
1. 是能够模块化的组织代码 ( 当代码规模比较复杂的时候 ).
2. 做到代码被重复使用 , 一份代码可以在多个位置使用 .
3. 让代码更好理解更简单 .
4. 直接调用现有方法开发 , 不必重复造轮子
方法的基本语法格式:
public static 返回类型 方法名称(形参列表){}
在这里要注意形参是实参的一份临时拷贝,形参并不能改变实参!!!
来看个例子:
public class TestModer { public static void main(String[] args) { int a = 10; int b = 20; System.out.println("交换前"+"a = " + a + " b = " + b); 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; } }
我们可以看看运行结果:
我们可以看到这里是传值调用,所以改变形参并不能改变实参。还有需要注意的就是在C语言中,被调用的函数需要放在调用函数前面,在Java中,方法的位置可以放前面也可以放后面,因为在Java中是从主函数开始执行的。
二、方法的重载
方法的重载是什么意思呢?我们通过一个例子来了解:
public class TestModer { 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); double a3 = 10.5; double b3 = 10.5; double c3 = 20.5; double ret3 = add(a3, b3, c3); System.out.println("ret3 = " + ret3); 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; } }
在这里我们可以看到结果:
我们可以看看这三个方法,分别代表了两个整数的加法,两个浮点数的加法,三个浮点数的加法。这三个方法的方法名字都相同,第一个方法和第二个方法参数个数相同,第二个方法和第三个方法参数类型相同。
在C语言中同一个工程中每个函数函数名不能相同,但是Java中这里可以,同一个方法名字, 提供不同版本的实现, 称为 方法重载。
重载需要满足的条件:
1、方法名相同 。
2、方法的参数不同 ( 参数个数或者参数类型 ) 。
3、方法的返回值类型不做要求。
三、方法递归
递归是什么?
一个方法在执行过程中调用自身 , 就称为 " 递归 "。
注意:
1、递归需要有个趋近于终止的条件,否则会无限循环。
2、每次执行会越来越接近这个条件。
递归执行过程是什么样的呢?来看看几个例题:
//输出一个整数的每一位,如:123的每一位是1 ,2 ,3 public class TestModer { public static void print(int n) { if (n < 10) { System.out.print(n + " "); } else { print(n / 10); System.out.print(n % 10 + " "); } } public static void main5(String[] args) { int num = 123; print(num); } }
我们可以看到方法print自己调用自己的过程,每次执行时,n都越来越接近终止条件,这就是递归的一个过程。
//求斐波那契数列的第3项。(递归实现) public class TestModer { public static int fib(int num) { if(num==1||num==2){ return 1; } else{ return fib(num-1)+fib(num-2); } } public static void main(String[] args) { int n=3; int x=fib(n); System.out.println(x); } }
四、小结
以上就是方法的一些使用,其中递归是一种重要的编程解决问题的方式,有些问题天然就是使用递归方式定义的(例如斐波那契数列, 二叉树等), 此时使用递归来解就很容易,有些问题使用递归和使用非递归(循环)都可以解决,那么此时更推荐使用循环, 相比于递归, 非递归程序更加高效。
加载全部内容