方法,方法的重载及递归

方法

方法是具有某项功能的代码块

方法不调用不执行

方法存在与类中方法外,不能嵌套

有返回值

​ 需要获得方法的返回值时使用

​ 修饰符 返回值类型 方法名([参数]){

​ 方法体;

​ return 返回值;

​ }

​ 修饰符:访问权限

​ 返回值类型:在有返回值的方法结束之后所返回的数值的类型

​ 参数:

​ 形参:写在方法的()内,不限数量,数据类型可以为基本类型也可以为引用类型,形参相当于局部变量的声 明,形参在没有需要的时候可以忽略

​ 实参:调用方法时()中的参数,需要与调用的方法中的形参数据类型,顺序一一对应

​ 每个参数之间用,隔开

​ 有返回值的方法的调用:

​ 直接调用: 方法名();

​ 赋值调用: 数据类型 变量名=方法名(参数);

​ 赋值调用接收的是调所用方法的返回值

​ 输出调用: System.out.println(方法名(参数));

​ 输出调用打印的是所调用方法的返回值

//求两个数的和的方法

public static int sum(int a,int b){
    System.out.println("有返回值的方法");
    return a+=b;	//return:存在于方法中,有返回值的方法中必须有return,return结束方法,并返回返回值
}

//在主方法中调用
public static void main(String[] args){
    //直接调用
    sum(1,2);	//执行方法语句,有返回值,但是没接收
    //赋值调用
    int sum1 =sum(1,2)	//将返回值赋值给sum1
    //输出调用
    System.out.println(sum(1,2));	//打印返回值	3
    
}

无返回值

​ 修饰符 void 方法名([参数]){

​ 方法体;

​ [return;]

​ }

​ void:表示没有返回值

​ 无返回值的调用:

​ 直接调用

//打印99乘法表

public static void table(){

    for(int i=1;i<=9;i++){//控制行数为9行

        for(int j=1;j<=i;j++){//每行打印的列数与行数相同

            System.out.print(j+"*"+i+"="+j*i+"\t");//循环列数*行数
        }
        System.out.println();//换行
    }
}

public static void main(String[] args){
    //直接调用
    table();//调用table方法,执行方法体语句 打印99乘法表
}

方法实参的数据类型必须<=形参的数据类型

返回值的数据类型<=方法的返回值类型<=接收返回值的数据类型

在java中,方法定义时,因为形参时声明局部变量,所以实参没有默认值

方法的重载

在同一个类中,有多个方法名相同但是参数列表不同的方法,就可以构成方法的重载

参数列表的不同体现为:

参数的个数不同
参数的数据类型不同
不同类型的参数顺序不同

方法的重载可以将一些功能相似的方法归类,可以优化代码,方便开发人员的使用

	//将需要不同数据类型求和的方法构成重载

	/*
		重载方法,只和方法名与参数列表有关
		
		方法的重载和修饰符的无关
		方法的重载和有无反回值无关
		方法的重载和返回值类型无关
		方法的重载和参数的名字无关
	*/

	private static String getSum(int a,int b){
		System.out.println("int  int");
		System.out.println(a+b);
		return "";
	}
	
	//求三个整数的和
	public static void getSum(int a,int b,int c){
		System.out.println("int  int int");
		System.out.println(a+b+c);
	}
	
	//求两个小数的和
	public static void getSum(double d1,double d2){
		System.out.println("double double");
		System.out.println(d1+d2);
	}
	//求三个小数的和
	public static void getSum(double d1,double d2,double d3){
		System.out.println("double double double");
		System.out.println(d1+d2+d3);
	}

	
	//方法的调用
	public static void main(String[] args){
    	getSum(实参);//可以输入重载方法中对应任意一个方法的参数列表
	}

一个方法的重载特性,是类中多态的一种表现

一个类中方法是封装的一种体现

递归

方法的内调用本方法,是一种非常消耗内存的方式

​ 递归的组成:

​ 递归头:停止自己调用自己的条件(因为递归会形成死循环,所以必须要递归头,而且递归头必须在方法的最开始)

​ 递归体:自己调用自己

递归阶段:

​ 递归前进段:到达临界条件之前一直调用本方法

​ 临界条件:停止一直调用本方法的条件

​ 递归返回段:从临界条件开始,将结果逐步返回调用层

//阶乘  求某个数的阶乘  5*4!
public static int test(int i){
	if(i==1){
		return 1;
	}
	return i*test(i-1);    //5*4!-->5*4*3!-->...到i=1时到达临界条件
}


//用递归打印99乘法表
	
public static void table(int i){
	if(i==1){//临界条件
		System.out.print(i+"*"+i+"="+i*i);
		System.out.println();
	}else{
		table(i-1);//利用代码右上而下及递归返回段的特性,达到打印99乘法表
		for(int j=1;j<=i;j++){
			System.out.print(j+"*"+i+"="+i*j+"\t");//打印列
		}
		System.out.println();
	}
}

//调用方法	
public static void main(String[] args){
	table(9);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值