JAVA基础5——方法

JAVA基础5——方法

  • 方法
    • 方法的格式
    • 方法的调用(有具体返回值)
      • 案例-两数求和
      • 调用方法
      • 方法调用详细步骤
      • 方法的练习--比较两数是否相等
    • 方法的调用(无具体返回值)
      • 案例-输出星形
      • 调用方法(无返回值,void)
    • 方法重载

方法

方法是完成特定功能的代码块。
定义方法可以将功能代码进行封装,
便于对该功能进行复用,提高代码的复用性

方法的格式

方法的格式

		修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
			方法体语句;
			return 返回值; 
		} 

方法的格式说明

  • 修饰符:目前就用 public static。后面我们再详细的讲解其他的修饰符。
  • 返回值类型:就是功能结果的数据类型。
  • 方法名:符合命名规则即可。方便我们的调用。
  • 参数:
    • 实际参数:就是实际参与运算的。
    • 形式参数;就是方法定义上的,用于接收实际参数的。
  • 参数类型:就是参数的数据类型
  • 参数名:就是变量名
  • 方法体语句:就是完成功能的代码。
  • return:结束方法的。
  • 返回值:就是功能的结果,由return带给调用者。

要想写好一个方法,就必须明确两个东西

  1. 返回值类型(结果的数据类型)
  2. 参数列表 (形参的类型及个数)——你要传递几个参数,以及每个参数的数据类型

方法的调用(有具体返回值)

案例-两数求和

需求:求两个数据之和的案例

public class Demo_method {
    public static int add(int a,int b){			//定义求和方法
        int sum=x+y;
        return sum;
    }
}

调用方法

  1. 单独调用,但是没有意义,所以不推荐。
	int x=10;
	int y=20;						
	add(x,y);			//单独调用
  1. 输出调用,但是不够好,因为我们可能需要针对结果进行进一步的操作。
	int x=10;
	int y=20;						
	System.out.println(add(x,y));	//输出调用
  1. 赋值调用可以赋值给一个和返回类型对应的变量,然后输出变量(推荐方案)
	int x=10;
	int y=20;
    int sum=add(x,y);
    //sum可以进一步操作
    System.out.println(sum);		//赋值调用

void返回类型的方法:只能单独调用!不能用于打印!
注意:返回值类型和参数列表中参数类型没有关系!
定义功能,方法中需要定义什么就定义什么,不需要的就不要定义。

方法调用详细步骤

public class Demo_method {
    public static void main(String[] args){     //1.从main方法开始执行
        int x=10;
        int y=20;                               //2.定义两个int类型变量
        int sum=add(x,y);                       //3.调用add方法,
        //7.将方法add的结果30返回给sum
        System.out.println(sum);
    }
    public static int add(int a,int b){         //4.将x和y分别传递给a和b;赋值a=10,b=20
        int sum=a+b;                            //5.执行语句把a和b相加赋值给sum
        return sum;                             //6.把sum结果30返回来
    }
}

方法的练习–比较两数是否相等

需求:键盘录入两个数据,比较两个数是否相等

//比较两个数是否相等

/*分析
返回值类型boolean
参数列表 int a,int b
*/
import java.util.Scanner;
public class Dome_function {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入第一个数据");
        int x=sc.nextInt();
        System.out.println("请输入第二个数据");
        int y=sc.nextInt();
        boolean result=compare(x,y);
        System.out.println(result);
    }
    public static boolean compare(int a,int b){
        //if语句实现
        /*if(a==b){
            return true;
        }else {
            return false;
        }
        */

        //三元改进
        //boolean x=(a==b)?true:false;
        //return x;

        //继续改进
        //return (a==b)?true:false;

        //最终改进
        return a==b;
    }
}

注意事项

  • 自定义方法只有被调用才会被执行。
  • 方法中只能调用方法,不可以在方法内部定义方法。因为方法是平级的。
  • 方法定义的时候参数之间用逗号隔开
  • 方法调用的时候不用在传递数据类型
  • 如果方法有明确的返回值,一定要有return带回一个值

方法的调用(无具体返回值)

案例-输出星形

需求:根据键盘录入的行数和列数,在控制台输出星形

public static void printStar(int a,int b){
        for (int x=1;x<=a;x++){                 //外循环决定行数
            for (int y=1;y<=b;y++){             //内循环决定列数
                System.out.print("*");
            }
            System.out.println();
        }
    }

调用方法(无返回值,void)

  1. 单独调用
	printStar(6,7)
  1. 输出调用(错误)
	System.out.println(printStar(6,7));

报错如下
错误:(13, 37) java: 此处不允许使用 '空' 类型
3. 赋值调用(错误)

	void v=printStar(6,7)

报错如下
错误:(13, 9) java: 非法的表达式开始

正确完整代码如下

// 需求:根据键盘录入的行数和列数,在控制台输出星形
import java.util.Scanner;
public class Dome_function2 {
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入行数");
        int x=sc.nextInt();
        System.out.println("请输入列数");
        int y=sc.nextInt();
        printStar(x,y);
        //void v=printStar(6,7);
        //System.out.println(printStar(6,7));
    }
    public static void printStar(int a,int b){
        for (int x=1;x<=a;x++){                 //外循环决定行数
            for (int y=1;y<=b;y++){             //内循环决定列数
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

方法重载

方法重载概述:

  • 在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可
  • 函数的功能一样,仅仅是参与运算的未知内容不同时,可以定义多个函数,却使用统一函数名称,这样方便阅读。
  • 在调用时,虚拟机通过参数列表的不同来区分同名函数。
  • 好处:方便阅读,优化了程序设计。
  • 特点:与返回值类型无关

参数列表不同:

  • 参数个数不同
  • 参数类型不同
  • 参数的顺序不同(算重载,但是在开发中不用)

求和案例

public class FunctionOverload {
    public static void main(String[] args){
        System.out.println(sum(10,30));
        System.out.println(sum(10,30,88));
        System.out.println(sum(10.59f,30.55f));
        System.out.println(sum(10.89f,30,83));
    }
    public static int sum(int a,int b){
        System.out.println("int");
        return a+b;
    }
    public static int sum(int a,int b,int c){
        System.out.println("int");
        return a+b+c;
    }
    public static float sum(float a,float b){
        System.out.println("float");
        return a+b;
    }
    public static float sum(float a,int b,int c){
        System.out.println("float");
        return a+b+c;
    }
}

运行结果:

int
40
int
128
float
41.14
float
123.89

如何判断几个函数是否是重载的呢?

  1. 函数名相同
  2. 参数列表不同(个数和类型)

你可能感兴趣的:(Java基础)