JavaSE之路10--函数

什么是函数(必会): 完成特定功能的代码块
看一个示例:

//定义了一个函数p1,打印金字塔
public static void p1(){
System.out.println(" *");
System.out.println(" ***");
System.out.println(" *****");
System.out.println(" *******");
}

//定义了一个函数p2,打印倒金字塔
public static void p2(){
System.out.println(" *******");
System.out.println(" *****");
System.out.println(" ***");
System.out.println(" *");
}

//在main函数中调用p1,p2.
public static void main(String[] args) {
p1();//调用函数p1
p2();//调用函数p2
}
注意:
1)p1,p2都是为了完成某个功能,都是一段代码
2)为了方便使用,将这段代码块取个名字:p1,p2
3)以后在main函数中只要叫p1就相当于执行对应的代码块
4)函数的目的:
1.为了提高代码的"重用"
2.分工明确(老婆主内,老公主外)
5)在java中将"函数"称为"方法"

提问:如果要打印如下图形怎么办?
*
***
*****
*******
*******
*****
***
*
*
***
*****
*******
*******
*****
***
*

如何定义方法(必会)
格式:
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…) {
方法体;

        return 返回值;

  }

1)修饰符 比较多,后面会详细介绍。目前public static
2)返回值类型:方法处理后返回的结果值类型
3)方法中的参数: 方法所需要的输入变量
4)方法参数类型: 方法所需要的输入变量的数据类型
5)return:通过return结束函数,并返回值到外界

生活示例1:
老婆说:小子!给你100块钱,跟爷笑一个
方法名:小子
输入变量:100块钱
输入变量类型:整数
返回值:一个笑
返回值类型:整数

生活示例2:
女王陛下说:小安子过来!家里没有酱油了,我给你10元钱,一代垃圾
你把垃圾扔掉,买瓶酱油回来
方法名:小安子
输入变量有2个:10块钱+一代垃圾
输入变量类型:整数
返回值:一瓶酱油
返回值类型:整数

生活示例3: 今天是情人节,给女朋友买了一束鲜花,女朋友夸我很浪漫,给了我一个吻

方法名:情人节
输入变量有1个:一束鲜花
输入变量类型:整数
返回值:一个吻
返回值类型:整数

程序示例1:编写一个方法fun_aver,实现功能:求2个整数的平均值
方法名:fun_aver
输入变量:2个整数
输入变量类型:int
返回值:2个数的平均值
返回值类型:double

参考代码:
public static double fun_aver(int n1,int n2) {
double result;
result=(n1+n2)/2.0;
return result;
}

注意:
1)n1,n2在定义时写在方法()中的,被称为 形参
2)形参的目的是为了让"外界"在使用方法时能够传值给它们。
例如:f(x)=2x+1 其中的x就是形参
使用这个函数:f(3) 其中3这个值会传给x–然后计算3*2+1=7
3)int result这个变量是定义在方法内部的变量,该变量是为了
完成方法本身的功能,自己定义的变量。

程序示例2:编写一个方法fun_max,实现功能:求3个整数的最大值
方法名:fun_max
输入变量:3个整数
输入变量类型:整数
返回值:3个数的最大值
返回值类型:整数

public static int fun_max(int n1,int n2,int n3){

}

参考代码:
public static double fun_max(int n1,int n2,int n3) {
int max;
if(n1>n2){
max=n1;
}else{
max=n2;
}
if(max<n3){
max=n3;
}
return max;
}

程序示例3:编写一个方法fun_jc,实现功能:求一个数的阶层
方法名:fun_jc
输入变量:1个整数
输入变量类型:整数
返回值:3个数的阶层
返回值类型:long (考虑到阶层的范围会超过 int范围)

参考代码:
public static long fun_jc(int n) {
long result=1;
for(int i=1;i<=n;i++){
result=result*i;
}
return result;
}

注意:
1.方法与方法是平级关系,不能嵌套定义
2.方法定义的时候参数之间用逗号隔开

如何调用有返回值的方法(必会)
调用示例:
//在定义方法fun_aver
public static double fun_aver(int n1,int n2) {
double result;
double=(n1+n2)/2.0;
return result;
}

 //在main方法中调用该方法
 public static void main(String[] args) {
       double aver;
       aver=fun_aver(3,4);//直接写死
       System.out.println(aver);
  }
 改成:
      public static void main(String[] args) {
       double aver,n1=3,n2=4;
       aver=fun_aver(n1,n2);//这样n1,n2还可以由用户通过键盘输入,比较灵活
       System.out.println(aver);
  }

注意:
0.方法不调用,永远不会执行
1.一般都是在main方法中调用自己定义的方法。
2.调用格式: 变量名=方法名(实参列表)
3.变量名用于将方法的结果保存起来
4.方法调用的时候不用在传递数据类型,在定义的时候要指定数据类型(***)
5.实参数的变量名 和 形参的变量名可以相同也可以不同,不过为了代码的可读性,一般都相同
6.方法一遇到return就会马上结束方法.类似于break退出循环一样

void关键字的方法(必会):
1)上述定义的几个方法都是有返回值的,方法能否不返回值?
生活举例:
老婆生气:我给你10万,你滚吧。
我:好,我滚,以后也不回来了
方法名:老婆生气
输入变量:10万
输入变量类型:整数
返回值:无

2)如果一个方法不返回值,则在定义方法将"返回类型"改成void
3)一般那些功能不需要返回值呢?
如果一个方法不是"业务规则计算",而是执行某个"动作",
这样的方法非常适合定义成void的方法。

示例1:编写一个方法,该方法能够输出n个空格
public static void print_space(int n){
for(int i=1;i<=n;i++){
System.out.print(" ");//注意不要换行
}
}
调用:
public static void main(String[] args) {
print_space(30);
System.out.println(“I LOVE YOU”);
}

说明:
1)如果一个方法被定义成void类型,则该方法中不充许出现 return 值 的表达式
2)对于外界也不能用变量名来保存值
3)对于void类型的调用格式一般为:方法名(实参列表);

自定义方法的相互调用(必会):
1.到目前为止,我们都是main—>调用其它方法
2.main–>调用方法1–>调用方法2

示例1:输出如下的图形
如果要打印如下图形怎么办?
*
***
*****
*******
*******
*****
***
*
*
***
*****
*******
*******
*****
***
*
思路:
1)定义一个方法用于打印上半角号–p1
2)定义一个方法用于打印下半角
号–p2
3)定义一个方法用于调用p1,p2完成输出上面的星号–p
4)在main方法中调用p方法

示例2:让用户输入2个数,求2个数的阶层的和. 即:m!+n!
思路:
1)定义一个方法jc用于求阶层
2)定义一个方法sum用于求2个数的和
3)定义一个方法calc用于计算结果
4)在main方法中调用calc

猜你喜欢

转载自blog.csdn.net/BD_vpiness/article/details/83990156