Java方法

1.什么是方法

   方法 是类或对象的行为特征的抽象,方法 是类或对象最重要的组成部分。** 方法** 就是一个代码片段,类似于C语言中的“函数”。
  方法 存在的意义:
   1.当代码的规模比较复杂的时候能够模块化的组织代码;
   2.方法能够在多个位置当中使用;
   3.能够让代码更好理解;
   4.直接调用写好的实现方法,快捷实现想要达成的目的。
  方法不能够独立存在,方法必须属于类或对象。从逻辑意义上来看,方法要么属于该类本身,要么属于该类的一个对象。永远不能独立执行方法,执行方法必须使用类或对象作为调用者。

2.方法定义语法

  基本语法:

	//方法定义
	public static 方法的返回值  方法名称([参数类型   形参...]){
		方法体代码;
		[return 返回值];
	}

  注意:1.方法在定义时,参数可以没有,若有参数每个参数需要指定其的类型;2.方法的返回值也可以没有,若不需要返回值,则返回值类型应当写为void;3.Java当中并没有“函数声明”的概念。
  如果声明方法时包含形参声明,则调用方法时必须给这些形参指定参数值,调用方法时实际传给形参的参数值也被称为实参。另外,Java的参数传递机制中方法的参数传递只有一种,就是值传递 ** 值传递** ,即将实参值的副本传入方法当中,而实参本身并不会受到影响。不管方法对这个实参副本如何操作,都不会对实际参数值产生任何影响。
  示例

public class JavaTest01{
	public static void swap(int a,int b){
		int temp = a;
		a = b;
		b = temp;
		System.out.println("swap方法中 a 的值为:" + a + ",b 的值为:" + b);
	}
	public static void main(String[] args){
		int a = 10;
		int b = 20;
		swap(a ,b );
		System.out.println("main方法中 a 的值为:" + a + ",b 的值为:" + b);
	}
	---------------------------------------------------------------------------
	输出结果:
	swap方法中 a 的值为:20,b 的值为:10
	main方法中 a 的值为:10,b 的值为:20
}

  方法执行规则:
   1.方法只有在被调用的时候在会被执行;
   2.参数传递完毕后,就会执行方法体代码;
   3.当方法执行完毕(如遇到return 或 exit(0)),就会执行完毕。
   4.一个方法能够被多次使用。

3.方法的重载

  Java允许同一个类里定义多个同名方法,只要形参列表不同就可以。如果一个类当中包含两个或者两个以上的方法名相同,但是形参列表不同,则被称为 方法重载
  方法重载的要求:同一类中方法名相同,参数列表不同
  示例:

public class JavaTest02{
	public static void test(int n){
		System.out.println("有参数");
	}
	public static void test(){
		System.out.println("无参数");
	}
	public static void main(String[] args){
		test();
		test(5);
	}
}
------------------------------------------------
输出结果:
	无参数
	有参数

  在编译、运行程序时,虽然两个test()的方法名相同,但因为它们的形参列表不同,系统也能够正常分别这两个方法。

4.方法递归

  一个方法体内部调用自己本身,就被称为 ** 方法递归** 。方法递归当中包含了一个隐式的循环,它会重复执行某段代码,但这种重复执行无需循环控制。
  递归要满足两个条件:1.调用自己本身;2.有一个趋近于终止的条件。由于方法调用都是发生在栈(大约1~2M)上的,如果没有终止条件,则会导致栈溢出异常(java.lang.StackOverFlowError)
  示例1:递归求N的阶乘。

public class JavaTest03 {
    public static int factorial(int n){
        if(1 == n){
            return 1;
        }
        return n * factorial(n - 1);
    }
    public static int factorialOne(int n){
        return (1 == n)? 1:(n * factorialOne(n - 1));
    }
    public static void main(String[] args) {
        System.out.println(factorialOne(5));
    }
}

  示例2:求斐波那契数列的第N项。

import java.util.Scanner;
public class JavaTest05 { 
    //非递归
    public static int fibOne(int n){
        int f1 = 1;
        int f2 = 1;
        int f3 = 1;
        for(int i = 3;i <= n;i++){
            f3 = f2 + f1;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
    //递归
    public static int fibTwo(int n){
        if(1 == n || 2 == n){
            return 1;
        }
        return fibTwo(n - 1) +fibTwo(n - 2);
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(fibOne(scan.nextInt()));
        scan.close();
    }
}

  示例3:青蛙跳台阶,一只青蛙一次可以跳1级台阶,也可以跳2级台阶,求该青蛙跳上一个n级台阶总共有几种跳法。

import java.util.Scanner;
public class JavaTest07 {
    public static int frogJumpOne(int n){
        int f1 = 1;
        int f2 = 2;
        int f3 = 1;
        if(2 == n){
            return 2;
        }
        for(int i = 3;i <= n;i++){
            f3 = f2 + f1;
            f1 = f2;
            f2 = f3;
        }
        return f3;
    }
    public static int frogJumpTwo(int n){
        if(1 == n || 2 == n){
            return n;
        }
        return frogJumpTwo(n - 1)+frogJumpTwo(n - 2);
    }
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.println(frogJumpOne(scan.nextInt()));
        scan.close();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值