JavaSE方法(函数)总结

JavaSE方法总结

方法是什么?

方法(function,通常又被称为函数)就是具有名称的特定功能代码的集合,解决了重复性代码的问题

方法就是一段可以重复调用的代码。假设有一个游戏程序,程序在运行过程中,要不断地发射炮弹。发射炮弹的动作需要编写100行代码,在每次实现发射炮弹的地方都需要重复地编写这100行代码,这样程序 会变得很臃肿,可读性也非常差。为了解决上述问题,通常会将发射炮弹的代码提取出来,放在一个{ }中并为这段代码起个名字,提取出来的代码可以被看作是程序中定义的一个函数。这样在每次发射炮弹的地方, 只需通过代码的名称调用方法,就能完成发射炮弹的动作。

 在Java中,定义一 方法的语法格式如下

修饰符 返回值类型 方法名称(参数类型参数名1,参数类型参数名2)

 执行语句

...

 return返回值; 

对于方法的语法格式,具体说明如下。 

  1. 修饰符:方法的修饰符比较多,例如,对访问权限进行限定的修饰符:public 公共的 、protected 保护的、private 私有的 ,还有static 静态的、static修饰符、final修饰符等。
  2. 返回值类型:用于限定方法返回值的数据类型。 
  3. 参数类型:用于限定调用方法时传入参数的数据类型。 
  4. 参数名:是一个变量,用于接收调用方法时传入的数据。
  5. return关键字:用于返回方法指定类型的值并结束方法。 
  6. 返回值:被return语句返回的值,该值会返回给调用者。

方法中的“参数类型参数名1,参数类型参数名2”称为参数列表,参数列表用于描 述方法在被调用时需要接收的参数,如果方法不需要接收任何参数,则参数列表为空,即()内不写任何内容。方法的返回值类型必须是方法声明的返回值类型,如果方法没有返回值,返回值类型要声明为void,此时,方法中return语句可以省略。

函数的参数传递

  1. 形式参数:函数定义时的参数为形式参数==>简称 形参
  2. 实际参数:函数调用时的参数为实际参数==>简称 实参

参数传递:只能由实参传给形参

注意:实参和形参在个数、顺序、类型上都要保持一致。

函数调用:

注意:实参和形参要一一对应,可能存在类型自动转换 

1.方法为静态方法时:

  • a.静态方法在同一类下时:  静态方法名(实参);
  • b.静态方法不在同一类下时:类名.静态方法名(实参);

2.方法为实例方法时:

  • 要先实例化一个对象,然后:对象.实例方法(实参);

例子如下:

public class methodTest01 {
    public static void main(String[] args) {
 
        //调用同一类下静态方法类名可省略
        doSome();
        //调用不同类下的静态方法类名要写
        myMethod.doSome();
        //调用同一类下实例方法要先实例化
        methodTest01 mT01 = new methodTest01();
        mT01.doOther();
        //调用不同类下实例方法也要实例化
        myMethod mM = new myMethod();
        mM.doOther();
 
    }
 
    //同一类下静态方法
    public static void doSome(){
        System.out.println("执行同一类下的静态方法");
    }
    //同一类下实例方法
    public void doOther(){
        System.out.println("执行同一类下实例方法");
    }
 
}
 
class myMethod{
 
    //不同类下静态方法
    public static void doSome(){
        System.out.println("执行不同类下的静态方法");
    }
    //不同类下实例方法
    public void doOther(){
        System.out.println("执行不同类下实例方法");
    }
 
}

  执行结果:

 

1.无返回值

当函数定义完成后,不会自己执行,需要在主方法(main方法)中通过调用来执行
格式:函数名称([实际参数列表])
例:定义一个方法,使用“*”符号打印矩形 

	public static void main(String[] args) {
		method(3,5);
}
	public static void method(int h,int w) {
		for(int i=0;i<h;i++) {
			for(int j=0;j<w;j++) {
				System.out.print("*");
		}
		System.out.println();
	}
	System.out.println();
}

结果:

 2.有返回值

例:定义一个方法,求出面积

	public static void main(String[] args) {
		int area=method(3,5);
		System.out.println("面积是:"+area);
}
	public static int method(int x,int y) {
		int temp=x*y;
		return temp;
	}

结果:面积是:15

方法重载

方法重载(overload)是指在同一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或个数或顺序。(满足三个下划线条件才构成重载)三个条件总结如下:

  1. 同一类中
  2. 方法名相同
  3. 不同参数列表(形参个数或者顺序不同)

注意:方法重载和 [修饰符列表] 无关,和返回值类型无关,这两者不同但方法名和参数列表相同时,构成重复定义方法的错误

例:定义3个add()方法,分别用于2个整数相加,3个整数相加和2个小数相加

	public static void main(String[] args) {
		int sum1=add(1,2);
		int sum2=add(1,2,3);
		double sum3=add(1.2,2.3);
		System.out.println("sum1="+sum1);    //3
		System.out.println("sum2="+sum2);    //6
		System.out.println("sum3="+sum3);    //3.5
}
	public static int add(int x,int y) {
		return x+y;             
	}
	public static int add(int x,int y,int z) {
		return x+y+z;
	}
	public static double add(double x,double y) {
		return x+y;
	}

递归方法

递归其实就是方法在执行的过程中调用了自己本身。

出现栈内存溢出错误(StackOverflow Error)时:

  1. 查递归的终止条件是否合法
  2. 尝试调整堆栈空间的大小
  3. 还不行就只能继续扩大栈内存空间

原则:能不用递归尽量不用,能用循环代替的尽可能使用循环

例:一个人开始上楼梯,假设这个人每一次只能上一个或者两个台阶当他到达第n个台阶时,问:共有多少种走法?(斐波那契数列)  f(n) = f(n-1) + f(n-2)

	public static void main(String[] args) {
		System.out.println(F(11));
}
	public static int F(int num) {
		if(num==1) {
			return 1;
		}else if(num==2) {
			return 2;
		}else {
			return F(num-1)+F(num-2);
		}
	}

输出:144

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值