JAVA-编程基础-05-方法的定义、调用、重载

news2024/11/18 1:38:33

Lison <dreamlison@163.com>, v1.0.0, 2023.03.22

JAVA-编程基础-05-方法的定义、调用、重载

文章目录

  • JAVA-编程基础-05-方法的定义、调用、重载
    • 方法的概念
      • 什么是方法
    • 方法的定义和调用
      • 无参数方法定义和调用
      • 方法调用过程图解
    • 带参数方法的定义和调用
    • 带返回值方法的定义和调用
    • 方法的注意事项
    • 方法重载
      • 方法重载
    • 方法的参数传递
      • 方法参数传递基本类型
      • 方法参数传递引用类型

方法的概念

方法(method)是将具有独立功能的代码块组织成为一个整体,使其具有特殊功能的代码集

  • 注意
    • 方法必须先创建才可以使用,该过程称为方法的定义
    • 方法创建后并不是直接可以运行的,需要手动使用后,才执行,该过程称为方法的调用

什么是方法

Java的方法类似于其他语言的函数,是一段用来完成特定功能的代码片段。
一般情况下,定义一个方法包含以下语法:

方法包含一个方法头和一个方法体

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

下面是一个方法的所有部分

修饰符:这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型:方法可能会返回值。returnValueType是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下。returnValueType是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
形参:在方法调用时用于接收外界输入的数据;
实参:调用方法时实际传给方法的数据。
方法体:方法体包含具体的语句,定义该方法的功能。

方法的定义和调用

无参数方法定义和调用

  • 定义格式:

    public static void 方法名 (   ) {
    	// 方法体;
    }
    

    范例:

    public static void method (    ) {
    	// 方法体;
    }
    
  • 调用格式

    方法名();
    

    范例:

    method();
    

注意:方法必须先定义,后调用,否则程序将报错

方法调用过程图解

public class JavaMethod {

    public static void main(String[] args) {
        isEvenNumber();
    }


    public static void isEvenNumber() {
        int number = 10;
        if (number % 2 == 0) {
            System.out.println("偶数");
        }else{
            System.out.println("非偶数");
        }
    }

}

在这里插入图片描述

总结:每个方法在被调用执行的时候,都会进入栈内存,并且拥有自己独立的内存空间,方法内部代码调用完毕之后,会从栈内存中弹栈消失

带参数方法的定义和调用

定义格式:

参数:由数据类型和变量名组成 - 数据类型 变量名

定义格式:

public static void 方法名 (参数1) {
	方法体;
}

public static void 方法名 (参数1, 参数2, 参数3...) {
	方法体;
}

范例:

public static void isEvenNumber(int number){
    ...
}
public static void getMax(int num1, int num2){
    ...
}

注意

方法定义时,参数中的数据类型与变量名都不能缺少,缺少任意一个程序将报错

方法定义时,多个参数之间使用逗号( ,)分隔

调用格式:

方法名(参数);

方法名(参数1,参数2);

形参和实参

  1. 形参:方法定义中的参数

等同于变量定义格式,例如:int number

  1. 实参:方法调用中的参数

等同于使用变量或常量,例如: 10 numbe

带返回值方法的定义和调用

定义格式:

public static 数据类型 方法名 ( 参数 ) { 
	return 数据 ;
}

范例:

public static boolean isEvenNumber( int number ) {           
	return true ;
}
public static int getMax( int a, int b ) {
	return  100 ;
}

  • 注意:方法定义时return后面的返回值与方法定义上的数据类型要匹配,否则程序将报错

方法的注意事项

方法的注意事项
方法不能嵌套定义

示例代码:

public class MethodDemo {
public static void main(String[] args) {

}

public static void methodOne() {
	public static void methodTwo() {
   		// 这里会引发编译错误!!!
	}
}

}

void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据

示例代码:

public class MethodDemo {
    public static void main(String[] args) {

    }
    public static void methodTwo() {
        //return 100; 编译错误,因为没有具体返回值类型
        return;	
        //System.out.println(100); return语句后面不能跟数据或代码
    }
}

5.2 方法的通用格式
格式:

public static 返回值类型 方法名(参数) {
   方法体; 
   return 数据 ;
}

解释:

public static 修饰符,目前先记住这个格式

返回值类型 方法操作完毕之后返回的数据的数据类型

如果方法操作完毕,没有数据返回,这里写void,而且方法体中一般不写return

方法名 调用方法时候使用的标识

参数 由数据类型和变量名组成,多个参数之间用逗号隔开

方法体 完成功能的代码块

return 如果方法操作完毕,有数据返回,用于把数据返回给调用者

定义方法时,要做到两个明确

明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有,写void;如果有,写对应的数据类型
明确参数:主要是明确参数的类型和数量
调用方法时的注意:

void类型的方法,直接调用即可
非void类型的方法,推荐用变量接收调用

方法重载

方法重载

  • 方法重载概念

    方法重载指同一个类中定义的多个方法之间的关系,满足下列条件的多个方法相互构成重载

    • 多个方法在同一个类中
    • 多个方法具有相同的方法名
    • 多个方法的参数不相同,类型不同或者数量不同
  • 注意:

    • 重载仅对应方法的定义,与方法的调用无关,调用方式参照标准格式
    • 重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关,换句话说不能通过返回值来判定两个方法是否相互构成重载
  • 正确范例:

    
    public class MethodDemo {
    	public static void fn(int a) {
        	//方法体
        }
        public static int fn(double a) {
        	//方法体
        }
    }
    
    public class MethodDemo {
    	public static float fn(int a) {
        	//方法体
        }
        public static int fn(int a , int b) {
        	//方法体
        }
    }
    
    
  • 错误示范:

    public class MethodDemo {
    	public static void fn(int a) {
        	//方法体
        }
        public static int fn(int a) { 	/*错误原因:重载与返回值无关*/
        	//方法体
        }
    }
    
    public class MethodDemo01 {
        public static void fn(int a) {
            //方法体
        }
    } 
    public class MethodDemo02 {
        public static int fn(double a) { /*错误原因:这是两个类的两个fn方法*/
            //方法体
        }
    }
    
    

方法的参数传递

方法参数传递基本类型

  • 测试代码
public class ArgsDemo01 {
    public static void main(String[] args) {
        int number = 100;
        System.out.println("调用change方法前:" + number);
        change(number);
        System.out.println("调用change方法后:" + number);
    }

    public static void change(int number) {
        number = 200;
    }
}


  • 结论:
    • 基本数据类型的参数,形式参数的改变,不影响实际参数
  • 结论依据:
    • 每个方法在栈内存中,都会有独立的栈空间,方法运行结束后就会弹栈消失

在这里插入图片描述

方法参数传递引用类型

  • 测试代码:

    public class ArgsDemo02 {
        public static void main(String[] args) {
            int[] arr = {10, 20, 30};
            System.out.println("调用change方法前:" + arr[1]);
            change(arr);
            System.out.println("调用change方法后:" + arr[1]);
        }
    
        public static void change(int[] arr) {
            arr[1] = 200;
        }
    }
    
    
    
  • 结论:

    • 对于引用类型的参数,形式参数的改变,影响实际参数的值
  • 结论依据:

    • 引用数据类型的传参,传入的是地址值,内存中会造成两个引用指向同一个内存的效果,所以即使方法弹栈,堆内存中的数据也已经是改变后的结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/705536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ureport 多数据集合关联显示

ureport 使用较少&#xff0c;目前单位这边有项目正好使用到了&#xff0c;也遇到不少坑&#xff0c;和其他报表稍微有些不同&#xff0c;在这里记录一下&#xff0c;为大家排一下坑 目前需求是要求数据以这样显示 1、创建数据源 1.1 B2、C1、D2 、C4、C2 各使用了不同的数据…

chatGPT流式回复是怎么实现的

chatGPT流式回复是怎么实现的 先说结论&#xff1a; chatGPT的流式回复用的就是HTTP请求方案中的server-send-event流式接口&#xff0c;也就是服务端向客户端推流数据。 那eventStream流式接口怎么实现呢&#xff0c;下面就进入正题&#xff01; 文章目录 chatGPT流式回复…

UE5ControlRig脚部IK匹配地面(FootIK)的简易实现

UE的Foot IK可以有多套方案&#xff0c;老的有动画蓝图中用TwoBoneIK&#xff0c;新的做法有ControlRig的BasicIK、FullBodyIK。博主针对FootIK做一个简单的验证&#xff0c;因此使用ControlRigTwoBoneIK的做法&#xff0c;并做一下记录&#xff0c;之前做过UE FootIK的大佬可以…

小白到运维工程师自学之路 第四十四集 (mariadb高可用集群故障转移)

一、概述 故障转移是指在集群中某个节点发生故障时&#xff0c;自动将服务转移到其他正常节点上的 过程。在MariaDB高可用集群中&#xff0c;通常使用主从复制的方式来实现故障转移。其中一个 节点被指定为主节点&#xff0c;负责处理所有的写操作和部分读操作&#xff0c;其…

通过无模型多代理强化学习掌握Stratego游戏

Stratego是一款流行的双人不完美信息棋盘游戏。由于其复杂性源于其巨大的游戏树、在不完善的信息下进行决策以及一开始的分段部署阶段&#xff0c;Stratego对人工智能&#xff08;AI&#xff09;构成了挑战。以前的计算机程序充其量只在业余水平上运行。 Perolat等人引入了一种…

Crontab的sendmail邮件发送引发磁盘问题

一.背景 大清早的收到一台服务器的内存占用高达98%的钉钉告警。 回想了一下&#xff0c;这台服务器没跑什么业务啊&#xff0c;咋从凌晨1点就开始告警呢? 赶紧登录服务器&#xff0c;top 按照内存倒序一下&#xff0c;没发现占用特别大的进程。内存监控图如下: 但是发现了很…

Windows环境本地部署Oracle11g r2实操手册

前言&#xff1a;一直在做其他测试&#xff0c;貌似都忘了Windows环境oracle安装&#xff0c;这是一个很早很早的安装记录了&#xff0c;放上来做个备录给到大家参考。 环境&#xff1a; &#xff08;都是常规系统及工具&#xff0c;官网度娘搜索即可下载测试学习&#xff09;…

通过无代码CDC工具实现Oracle实时同步到Mysql

Oracle数据实时同步需求 现代企业对于数据实时同步的需求日益迫切&#xff0c;特别是在涉及Oracle数据库的情况下。实时同步数据对企业来说至关重要&#xff0c;因为它可以确保不同系统之间的数据始终保持一致性和最新性&#xff0c;提供准确的决策支持和及时的业务反应。 针…

Leetcode-每日一题【725.分隔链表】

题目 给你一个头结点为 head 的单链表和一个整数 k &#xff0c;请你设计一个算法将链表分隔为 k 个连续的部分。每部分的长度应该尽可能的相等&#xff1a;任意两部分的长度差距不能超过 1 。这可能会导致有些部分为 null 。这 k 个部分应该按照在链表中出现的顺序排列&#…

在 JavaScript 中获取选中或突出显示的文本

本文将展示我们如何使用 DOM API 来让用户在屏幕上突出显示或选择文本。 DOM API 为我们提供了 getSelection() 方法&#xff0c;该方法允许我们获取用户选择的文本。 窗口对象可以直接访问这个方法。 让我们看看如何实际实现此功能。 使用 JavaScript 中的 window.getSelecti…

Vscode快速对比两个文件的不同部分

文件对比第一种方法&#xff1a; 打开vscode&#xff0c;打开文件或者文件夹 选中需要对比的文件 按住ctrl选择要对比的另一个文件&#xff0c;鼠标右键选择将已选项进行比较 结果如下&#xff1a; 文件对比第二种方法&#xff1a; 打开文件&#xff0c;点击鼠标右键 命…

牛客网论坛考研计算机组成原理笔记,GitHub已下载量已过百万

**前言&#xff1a;**看过很多书&#xff0c;但总是忘得很快。知识广度越大越容易接纳新东西&#xff0c;但从考察角度来说&#xff0c;自然是对某个方面了解越深越好。那些大而全的著作虽然每本都是经典中的经典&#xff0c;但实际工作中可能只用到其中的一小部分。我现在越发…

机器学习13: 使用 TensorFlow 进行二元分类(Binary Classification)编程实践

在【机器学习6】和【机器学习9】中&#xff0c;我们使用 TensorFlow 进行了“线性回归模型”和“组合特征”编程实践。本质上&#xff0c;其中采用的都是回归模型&#xff0c;也就是说&#xff0c;我们创建了产生浮点预测的模型&#xff0c;比如“这个社区的房子要花 N 千美元。…

基于matlab深度学习的多光谱图像语义分割(附源码)

一、前言 此示例演示如何使用 U-Net 对具有七个通道的多光谱图像执行语义分割。 语义分割涉及用类标记图像中的每个像素。语义分割的一个应用是跟踪森林砍伐&#xff0c;即森林覆盖率随时间的变化。环境机构跟踪森林砍伐&#xff0c;以评估和量化一个地区的环境和生态健康状况…

Flink消费kafka出现空指针异常

文章目录 出现场景&#xff1a;表现&#xff1a;问题&#xff1a;解决&#xff1a; tombstone : Kafka中提供了一个墓碑消息&#xff08;tombstone&#xff09;的概念&#xff0c;如果一条消息的key不为null&#xff0c;但是其value为null&#xff0c;那么此消息就是墓碑消息. …

echarts tooltip自定义线条样式及数据提示框内容

option {......tooltip: {trigger: axis,borderWidth: 0, // 去除数据提示框默认的边框axisPointer: {lineStyle: { // 设置hover时竖线样式color: {type: linear,x: 0,y: 0,x2: 0,y2: 1,colorStops: [{offset: 0,color: rgba(128,200,244,0) // 0% 处的颜色},{offset: 1,colo…

【40000字】!最适合新手的Springboot+Vue项目

更多文章&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg2NDY3NjY5NA&actiongetalbum&album_id2053253027934863360#wechat_redirect hello我是索奇&#xff0c;本套项目对应bilibili视频&#xff0c;大家可以结合视频看哈&#xff0c;有些基础的只看…

2022年系统架构师论文(回忆版)

2022年11月6日&#xff0c;全国计算机等级下半年考试&#xff0c;在疫情压力下如期举行。 北京市软件架构师考试地点在北京市工贸技师学院&#xff08;机电分院&#xff09;&#xff0c;地址&#xff1a;海淀区北四环北路132号&#xff08;金泰海博大酒店北侧&#xff09; 查看…

网络安全(黑客)自学笔记

建议一&#xff1a;黑客七个等级 黑客&#xff0c;对很多人来说充满诱惑力。很多人可以发现这门领域如同任何一门领域&#xff0c;越深入越敬畏&#xff0c;知识如海洋&#xff0c;黑客也存在一些等级&#xff0c;参考知道创宇 CEO ic&#xff08;世界顶级黑客团队 0x557 成员…

chatgpt赋能python:吐血推荐的Python编程好玩的代码

吐血推荐的Python编程好玩的代码 近年来&#xff0c;Python 成为了全球最受欢迎的编程语言之一。Python 的简洁明了&#xff0c;易学易用&#xff0c;使得越来越多的开发者选择了 Python。Python 的生态系统非常丰富&#xff0c;有很多丰富有趣的库和代码可以供我们玩耍。在本…