Java-函数(方法)

函数(方法)的定义:

 定义的位置:

 定义第一个函数:

在需要执行函数代码的位置,通过函数名称进行调用。

函数的调用:函数名();

注意:调用函数时,会优先执行函数内部代码,结束后,返回到函数调用处,继续向下执行。

public class TestFunction{
	
	public static void main(String[]args){
		System.out.println("床前明月光");
		printSign();  //函数调用
		System.out.println("疑是地上霜");
		printSign();
		System.out.println("举头望明月");
		printSign();
		System.out.println("低头思故乡");
		printSign();
	}	
	
		//定义:打印图形(1行10个减号)
	public static void printSign(){
		for(int i =1;i<=10;i++){
			System.out.print("-");
		}
		System.out.println();
	}
}

 函数的参数:

 形参与实参:

1.定义语法:

public static void 函数名称(形式参数){  //局部变量的声明

}

2.调用语法:

函数名称(实际参数); //为形式参数赋值

public class TestFunction2{
	
	public static void main(String[]args){
		System.out.println("床前明月光");
		printSign(5);  //函数调用
		System.out.println("疑是地上霜");
		printSign(10);
		System.out.println("举头望明月");
		printSign(15);
		System.out.println("低头思故乡");
		printSign(20);
	}	
	
		//打印图形, 定义形式参数
	public static void printSign(int count){
	
		for(int i =1;i<=count;i++){
			System.out.print("-");
		}
		System.out.println();
	}
}

 单个参数

 多个参数

public class TestFunction2{
	
	public static void main(String[]args){
		System.out.println("床前明月光");
		printSign(5,'#');  //函数调用
		System.out.println("疑是地上霜");
		printSign(10,'$');
		System.out.println("举头望明月");
		printSign(15,'@');
		System.out.println("低头思故乡");
		printSign(20,'*');
	}	
	
		//打印图形, 定义形式参数
	public static void printSign(int count, char sign){
	
		for(int i =1;i<=count;i++){
			System.out.print(sign);
		}
		System.out.println();
	}
}

补充:

1. == 比较的是地址,不是内容,当比较字符串时,==不够准确。

2.比较字符串时,应使用 s1.equals(s2),可准确的比较字符串内容。

3.当比较两个字符串不相同时,可使用  !s1.equals(s2) 。!(逻辑运算符:非)代表“不等”。

返回值与返回值类型

函数调用时,一些情况下无需返回结果;另外一些情况下则必须返回结果。

例如:存款操作无需返回结果;取款操作必须返回结果。

定义语法:

 

 

public class TestReturnVlue{
	
	public static void main(String[]args){
		//调用add 需要获得一个结果,参与到后续的运算中
		int result = add(10,20); 
		
		System.out.println("add函数的返回值:"+ result); //结果:30
		
		//二次运算
		System.out.println(result + 50);
	}
	
	public static  int add(int a,int b){
		System.out.println("---add executed---");
		int sum = a + b;
		return sum;
	}
}

return关键字

 

 return的两种用法:

1.应用在具有返回值类型的函数中:

return value;//表示结束当前函数,并伴有返回值;返回到函数调用处。(有具体的返回值类型)

2.应用在没有返回值类型(void)的函数中:

return;//表示结束当前函数,直接返回到函数调用处。(返回值是void)

注意:break是跳出循环,return是跳出整个函数。

注意事项:

注意:一个类中可以定义多个函数,函数之间属于并列关系,不可嵌套。

经验:一个函数只做一件事。

好处:减少代码冗余。提高复用性。提高可读性。提高可维护性。方便分工合作。

多级调用

 无穷递归

 递归

实际开发中,递归可以解决具有既定规律的特定问题。

注意:

所有能以递归解决的问题,循环都可以解决。当解决复杂问题时,递归的实现方式更为简单。

何时使用递归?

当需要解决的问题可以拆分成若干个小问题,大小问题的解决方法相同。

有固定规律,函数中自己调用自己。

如何正确使用递归?

设置有效的出口条件,避免无穷递归。

递归阶乘

public class TestGetSum{
	
	public static void main(String[]args){
		int result = factorial(5);
		System.out.println(result);
		//5的阶乘
	}	
	
	public static int factorial(int n ){ //n = 5
		if(n==1){        //增加出口条件,n=1时,无需计算阶乘,直接返回结果1。
			return 1;
		}
		
		return n * factorial(n -1);
	
	}
}

总结:

函数(方法)是什么?

一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。

方法格式的注意点

 方法的修饰符:暂时都使用public static 修饰。

方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。

形参列表可以有多个,甚至可以没有;如果有多个形参,多个形参必须使用 “,” 隔开,且不能给初始化值。

方法的其他写法

方法定义时:返回值类型、形参列表可以按照需求进行过填写。

 注意事项

1.如果方法不需要返回结果,返回值类型必须申明成void(无返回值),此时方法内部不可以使用return返回数据。

2.方法如果没有参数,或者返回值类型申明为void可以称为无参数、无返回值的方法,依次类推。

public class MethodDemo1{
	
	public static void main(String[] args){
		//目标:学会方法定义的其他形式,并理解其流程
		print();
		System.out.println("-------------");
		print();
	}
	
	/**
		  无参数返回值的方法
	*/
	public static void print(){
		for(int i = 0 ;i<3;i++){
			System.out.println("Hello World");
		}
	}
}

方法的常见问题

  • 方法的编写顺序无所谓。
  • 方法与方法之间是平级关系,不能嵌套定义。
  • 方法的返回值类型为void(无返回值),方法内则不能使用return返回数据,如果方法的返回值类型写了具体类型,方法内部则必须使用return返回对应类型的数据。
  • return语句下面,不能编写代码,因为永远执行不到,属于无效的代码。
  • 方法不调用就不执行,调用时必须严格匹配方法的参数情况。
  • 有返回值的方法调用时可以选择定义变量接受结果,或者直接输出调用,甚至直接调用;无返回值方法的调用只能直接调用一下。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值