细说Java中方法的定义以及两种调用方式

一、Java中方法的定义

在讲示例之前,我先总结一下Java中方法如何定义以及如何调用

1.1 四种方法类型

Java中的方法可以分为以下四类:

  1. 无参数无返回值
  2. 无参数有返回值
  3. 有参数无返回值
  4. 有参数有返回值

1.2 方法定义的格式

格式: 访问修饰符 返回值类型 方法名(参数列表){
方法体;
}

1.3 名词解释

(1)访问修饰符:方法允许被访问的权限范围,可以是public、protected、private,还可以忽略,还有一点,public可以被任意代码调用
(2)返回值类型:这个可以为int,float,byte等等一些数据类型,一般在方法体中最后一句用return 返回一个参数
(3)参数列表:通常是我们在方法外要传入的参数,还可以传入数组等等
(4)方法体:这就很简单了呗,写下你想写的语句来满足你的要去就可以啦

1.4 看看这几个实例你也许就懂了

先举个最简单的实例把

//方法一,这是无参数无返回值的方法,有返回值的就是用return
public void show(){
	System.out.print("大家好");
}

下面这个定义的就是有参数有返回值的方法

//很明显,这是一个比大小的方法,大的一者返回
public int exchange(int a,int b){
	if(a>b)
		return a;
	else
		return b;
}

是不是很简单呢?

二、Java中方法的调用

2.1 两种调用方法的方式

  1. 通过创建主函数的对象来调用方法
  2. 通过把 “static” 修饰符把方法可以直接调用函数

下面这个实例可能会有些复杂,但是看懂方法的调用的方式就可以了

2.2.1 问题描述

给定一个正整数N,然后求1! + 2! +3! +4!……N!

2.2.2 输入样例

3

2.2.3 输出样例

9

2.2.4 代码实现

方法一:

package gorit;
//求阶乘之和
import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    Main a=new Main();// ==============看这里,我们在这里创建了一个Main 的对象 a,
    int n=input.nextInt();
    int S=0;
    for(int i=1;i<=n;i++){
      S += a.fac(i);//求阶乘之和 ==================在这里我们通过对象a来调用方法,这是第一种方法
    }
    System.out.print(S);
  }
  
  //定义求阶乘的函数,递归法
  public int fac(int i){
    if(i==0||i==1)
      return 1;
    else
      return fac(i-1)*i;
  }
}

方法二:

package gorit;
//求阶乘之和
import java.util.Scanner;
public class Main{
  public static void main(String[] args){
    Scanner input=new Scanner(System.in);
    //Main a=new Main(); 我们把这里把Main 创建的对象 注释掉=======1
    int n=input.nextInt();
    int S=0;
    for(int i=1;i<=n;i++){
      S += fac(i);//求阶乘之和 ===============这里把 a. 也去掉====2
    }
    System.out.print(S);
  }
  
  //定义求阶乘的函数,递归法
  public static int fac(int i){  
 /*在这里public 与 int 之间加一个 static,
 然后程序就可以运行了,我解释一下:因为main是static类型的,是类成员,类成员可以直接使用类成员,
 所以我设置的方法用static修饰的话就可以直接使用,不需要创建对象*/
    if(i==0||i==1)
      return 1;
    else
      return fac(i-1)*i;
  }
}

猜你喜欢

转载自blog.csdn.net/caidewei121/article/details/88122729