Java方法01[方法的定义、调用、重载]

何为方法?

  • System.out.println() ; 前面一直在用,关于它你知道多少?
除了是输出语句外,我们还应该知道:System是系统的一个类,out是System下的一个输出对象,println()是一个方法。回想前面学的scanner.nextLine() 
scanner.nextInt() 都是    对象.方法名() 
  • 方法是语句的集合,它们在一起执行一个功能,可以被重复使用。
  • 方法包含于类或者对象中(不能在方法中再定义方法)
  • 设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保证方法的原子性,就是一个方法只完成1个功能,这样有利于我们后期的扩展。
  • 回顾方法的命名规则?
简单方法的代码实现
package com.ruomeng.method;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/22 9:04
 */
public class Demo01 {
    /**
     * main方法
     * */
    public static void main(String[] args) {
        int sum = add(1,2);
        System.out.println(sum);
    }
    /**
     * 加法方法
     * */
    public static int add(int a,int b){
        return a + b;
    }
}

方法的定义

  • 定义:Java的方法类似于其它语言的函数,是一段用来完成特定功能的代码片段。
  • 语法格式:
修饰符 返回值类型 方法名(参数类型 参数名){
	...
	方法体
	...
	return 返回值;
}
  • 修饰符:修饰符是可选的(可以是多个),告诉编辑器如何调用该方法。定义了该方法的访问类型。
  • 返回值类型:
    • 什么是返回值:一个方法可以完成某些特定的功能,这个功能结束之后大多需要返回最终执行结果,执行结果可能是一个具体存在的数据,而这个具体存在的数据就是返回值。
    • 不是所有的方法都有返回值:如果一个方法执行结束之后不返回任何数据,返回值类型必须为void关键字;若返回值类型不是void,这个方法执行结束之后必须返回一个具体的数值,否则编译会报错。
    • 如何返回值:return 值; 值的数据类型必须和方法的返回值类型一致 返回值类型是void时,方法体中不能编写 return 值; 这样的语句,但是可以写return;这样的语句,它代表终止return所在的方法。
  • 方法名:是方法的实际名称。规则:合法、见名知意、尽量使用动词,首字母小写且遵循驼峰命名规则。
  • 参数类型:形参是局部变量,在方法被调用时用于接收外界输入的数据。参数是可选的(可以是多个,多个形参之间用英文逗号隔开),可以不包含任何参数。形参中起决定性作用的是形参的数据类型,形参(局部变量)的名字只是一个标识符,方法在调用时,实际给方法传递的真实数据被称为实际参数(实参)。
  • 方法体:方法体包含具体的语句,定义该方法的功能。
实参的类型

实参可以是 常量、变量、表达式、方法等,无论实参是何种类型的量,在进行方法调用时,它们都必须具有确定的值, 以便把这些值传送给形参。 因此应预先用赋值,输入等办法使实参获得确定值。

实参和形参的区别:

1.形参是空白或占位符:方法的形参列于方法声明中,在方法定义的方法体内使用。当方法调用时,形参(任何种类的)是一类将被填充的空白或是占位符。

2.实参是用来填充形参的:当方法被调用时,实参列在方法名后面的括号里。执行方法调用时,实参被传递给形参。

3.传值调用和引用调用:指的是用于参数传递过程中的一种机制。传值调用中,只使用了实参的值。传值调用机制里,形参是一个局部变量,其初始值为相应实参的值。在引用调用机制里,将实参的地址传递给形参,从表面上看是以实参变量取代形参,因此任何发生在形参上的改变实际上都发生在实参变量上。

代码实现
  1. 形参、实参的简单举例说明
package com.ruomeng.method;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/22 10:14
 */
public class Demo02 {
    public static void main(String[] args) {
        //实参:实际调用传递给形参的参数 下面为int型的数 1  2
        int sum = add(1,2);
        System.out.println(sum);
    }
    /**
     *形式参数:用来定义作用的   下面的  a  b 形参名可以自己任意命名,它只是一个形式
     */
    public static int add(int a,int b){
        return a + b;
    }
}
  1. 自定义一个比较两个整数大小的方法
package com.ruomeng.method;

/**
 * @author 1301450090@qq.com
 * @date 2021/3/22 10:35
 */
public class Demo03 {
    public static void main(String[] args) {
        int max = max(10,10);
        System.out.println(max);
    }
    /**
     * 自定义一个比较两个整数大小的方法
     * public(权限修饰符:公共的,就是所有人都可以使用  知道即可,面向对象的时候再细讲)
     * static (这个修饰符就相当于告诉你,我要直接调用类变量)
     * int(方法返回值类型为int)
     * 参数值类型int,形式参数名自定义,这里定义为num1 num2
     */
    public static int max(int num1,int num2){

        int result ;
        if (num1==num2){
            System.out.println("num1=num2");
            return 0;
        }
        //通过分析,这里需要if双选择语句
        if (num1>num2){
            result = num1;
        }else{
            result = num2;
        }
        //定义的方法有具体的返回值类型时,我们需要return一个结果,return要放在我们定义的方法最下面
        //注意:return除了返回结果的作用,还有终止方法的作用,上面的return 0就是 当num1==num2时终止max方法,将0的值赋给方法调用中的max,由输出语句输出max结果为0
        return result;
    }
}

方法的调用

  • 方法只定义不调用是不会执行的,只有调用的时候才会执行。
  • 完整调用方法:类名.对象名.方法名(实参列表)
  • 在同一类中调用方法,如果方法的修饰符中有static关键字,类名可以省略;当调用其它类中的方法时,尽管有static关键字也不能省略类名,否则会默认从当前类中寻找方法调用。
  • 静态方法可以直接调用(可以省略对象名),而非静态方法需要定义这个类的对象,通过对象名调用
  • Java支持两种调用方法的方式,根据方法是否返回值来选择
  • 当方法返回一个值的时候,方法调用通常被当作一个值。格式:数据类型 变量名 = 方法名(实参列表);
//赋值调用	格式:数据类型 变量名 = 类名.对象名.方法名(实参列表);   调用方法,并且将返回值赋值给一个变量。变量数据类型必须和方法的返回值类型对应一致。
int larger = max(10,20); 
//打印调用	格式:System.out.println(类名.对象名.方法名(实参列表));   调用方法,并且将返回值打印显示出来
System.out.println(sum(4,30))
  • 如果方法返回值类型是void,方法调用一定是一条语句。例如:
//单独调用	格式:类名.对象.方法名(实参列表);    静态方法可以直接调用省略对象名,类名通常也可以省略,即方法修饰符列表含static时格式:方法名(实参列表)
System.out.println("Hello,ruomeng!");     
方法调用过程图解(以典型的赋值调用为例)

拓展:值传递引用传递的区别,Java中使用的是什么?(笔试题)

值传递和引用传递传的到底是啥?什么是堆、栈、函数调用栈?(详解)


方法重载

  • 重载就是在一个类中,有相同的方法名,但形参不同的方法。

  • 如果只需要执行一个操作,具有相同的方法名将会增加程序的可读性。

  • 方法重载的规则:

    • 方法名称必须相同。
    • 参数列表必须不同(参数个数不同、类型不同、顺序不同)。
    • 方法的返回类型可以相同可以不同。(但建议使用统一的返回值类型)
    • 方法的重载与方法的返回值类型无关
  • 实现理论:

    • 方法名称相同时,编译器会根据调用方法的参数个数、参数类型去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
注意:
1.在方法重载规则的参数列表必须不同中 “顺序不同”指的是 方法中所含的多种参数类型的顺序的不同。
第1个和第2个方法的参数个数不同,参数类型相同
第2个和第3个方法的参数类型不同,参数个数相同
第4个和第5个方法的参数个数相同,所包含的参数类型相同,参数类型的顺序不同
代码实现:
    public static int add (int a,int b){
        return a + b;
    }
    public static int add(int a,int b,int c){
        return a + b + c;
    }
    public static float add(float a,float b,float c){
        return a + b + c;
    }
     public static float add (float a,int b){
        return a + b;
    }
    public static float add (int a,float b){
        return a + b;
    }
}

如果我的博客对你有一点点帮助,望请大侠可以给文章点个赞再走,你们的鼓励将是我创作优质内容的动力!

声明:

因个人能力有限,博文中必有不足之处,望学术同仁不吝赐教!一起学习一起进步!

以上内容均为原创,转载请注明出处!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值