【Java笔记】第5章:函数

  • 前言
  • 1. 函数的理解
  • 2. 函数的基本使用
  • 3. 函数的参数
  • 4. 函数的返回值
  • 5. 函数的执行机制
  • 6. 函数的递归调用
  • 结语


在这里插入图片描述


上期回顾: 【Java笔记】第4章:深入学习循环结构
个人主页:C_GUIQU
归属专栏:【Java学习】

在这里插入图片描述

前言

各位小伙伴大家好!上期小编给大家讲解了Java中的循环结构,接下来讲讲函数!
在这里插入图片描述

1. 函数的理解

函数:执行一段特定功能的代码,并且可以通过名字被反复的调用。
函数的使用流程:
(1) 函数的定义:确定了函数的功能和函数名。

  • 函数的声明:确定函数名
  • 函数的实现:确定函数功能

(2) 函数的调用:通过函数名进行反复的使用
函数的位置:定义在类以内,其他函数以外。(与main函数并列)

2. 函数的基本使用

【函数的定义】

public static void 函数名(){
   // 函数体(函数实现)
}

函数的定义分为函数的声明和函数的实现
函数的声明:public static void 函数名()
函数的实现:{}
注意:函数名望文生义、驼峰命名。

【函数的调用】
(1) 可以通过函数名使用函数,被称为调用。
(2) 语法:函数名();

3. 函数的参数

多数情况下,函数与调用者之间需要数据的交互;调用者必须提供必要的数据,才能使函数完成相应的功能。

【参数概念】函数和调用者之间交互的数据被称为参数。
【参数分类】实参和形参。
【实参】

  • 实际参数:简称实参,函数调用时,用户传递给函数的具体数据。
  • 语法:函数名(实参);
  • 作用:实际参数用于给形参赋值。
  • 注意:实际参数的个数、顺序、数据类型必须和形参一致。

【形参】

  • 形式参数:简称形参,函数和调用者之间需要交互数据约定,约定调用者需要传递哪种类型、几个参数。
  • 语法:数据类型 参数名
  • 使用:将形参作为函数的局部变量进行使用即可。

4. 函数的返回值

【理解】函数和调用者之间的一种数据交互,调用者通过函数调用,函数需要给调用者返回的数据。
【语法】

public static 返回值类型 函数名(参数){
   // 函数体(函数功能)
}

【函数返回值类型】

  • 返回值类型为void,代表无返回值,函数无需给调用者返回任何数据结果。
  • 返回值类型为:8种基本数据、对象类型,代表函数必须给调用者返回对应的数据;函数体中必须 有return xxx;

【函数返回值的处理】

  • 第一种处理方式:定义和返回值类型同类型的变量接收。
  • 第二种处理方式:不处理。

【return的作用】

  • 将返回值返回给调用者。
  • 结束当前函数。

5. 函数的执行机制

【理解】
程序以main函数作为程序入口,进入main函数从上往下依次执行,如果遇到函数调用,则优先执行被调用函数内部的代码,函数执行完毕以后,带着返回值返回到调用位置,再继续后续代码。
【函数的嵌套调用】被调用的函数内部,又调用其他的函数。

6. 函数的递归调用

【理解】一个函数调用自身。

【注意】函数递归使用过程中,必须设置一个出口,否则可能会出现无穷递归,运行过程中报错。报错信息为:java.lang.StackOverflowError(栈溢出)。

【递归的思想】

  • 递进:每一次推进,计算都比上一次变得简单,直至简单到无需继续推进,就能获得结果。也叫到达出口。
  • 回归:基于出口的结果,逐层向上回归,依次计算每一层的结果,直至回归到最顶层。

【示例】

package demo;
public class Test{
	public static void main(String[]args){   // 135642
		int r = jieCheng(8);
		System.out.println(r);
	}
	
	// 函数功能:计算 n的阶乘
	public static int jieCheng(int n){
		// 递归的出口
		if(n==1 || n==0) return 1;// n的阶乘 = n* (n-1)的阶乘
		return n* jieCheng(n-1);
	}
}

结语

以上就是小编对Java中函数的讲解。
如果觉得小编讲的还可以,还请一键三连。互三必回!
持续更新中~!

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[随记]Mac安装Docker及运行开源Penpot

下载Docker Desktop for Mac:https://www.docker.com/products/docker-desktop/ 安装Docker Desktop for Mac,安装完成后,启动Docker,然后在终端输入: docker version 在Mac电脑的Desktop,随便创建一个文…

【真实体验】使用崖山YMP 迁移 Oracle/MySQL 至YashanDB 23.2 验证测试【YashanDB迁移体验官】

一、前言 说一下我和崖山数据库的结缘,大概在去年吧,因为我经常在墨天轮写文章,看到崖山数据库推出了一崖山体验官的活动,我就报名参加了。第一次体验了崖山数据库,也测试了我司数据库到崖山数据库的兼容性&#xff0…

钉钉手机端调试前端H5项目流程

此流程以Vue项目为例 一、操作步骤 在根目录下 vue.config.js 文件中将 devServer.host 设置为 0.0.0.0 // vue.config.js module.exports {devServer: {host: 0.0.0.0,...},...}本地启动项目,获取 Network App running at:- Local: http://localhost:8080/ -…

JAVA 学习·泛型(二)——通配泛型

有关泛型的基本概念&#xff0c;参见我的前一篇博客 JAVA 学习泛型&#xff08;一&#xff09;。 协变性 泛型不具备协变性 在介绍通配泛型之前&#xff0c;先来看一下下面的例子。我们定义了一个泛型栈&#xff1a; import java.util.ArrayList; class GenericStack<E>…

全新TOF感知RGBD相机 | 高帧率+AI,探索3D感知新境界

海康机器人在近期的机器视觉新品发布会上推出的全新TOF感知RGBD相机,无疑是对当前机器视觉技术的一次革新。这款相机不仅融合了高帧率、轻松集成、体积小巧以及供电稳定等诸多优点,更重要的是,它将AI与3D感知技术完美结合,通过高帧率+AI算法,实现了对不同场景的快速捕捉与…

Android Studio报错:Constant expression required

【出现的问题】&#xff1a; 使用JDK17以上版本&#xff0c;switch语句报错&#xff1a;Constant expression required 【解决方法】&#xff1a; 在gradle.properties配置文件下添加代码&#xff1a; android.nonFinalResIdsfalse 如图&#xff1a; 接着再点击右上角的Sync…

asyncionetworkxFuncAnimation学习--动态显示计算图的运行情况

asyncio&networkx&FuncAnimation学习--动态显示计算图的运行情况 一.效果二.代码 一.目的 1.动态显示计算图的运行状态(点或边是否已完成) 二.步骤: 1.定义计算图 2.asyncio 并行计算 3.networkx 显示计算图 4.FuncAnimation 动态更新 三.依赖: conda install pygraphv…

Linux shell编程学习笔记48:touch命令

0 前言 touch是csdn技能树Linux基础练习题中最常见的一条命令&#xff0c;这次我们就来研究它的功能和用法。 1. touch命令的功能、格式和选项说明 我们可以使用命令 touch --help 来查看touch命令的帮助信息。 purpleEndurer bash ~ $ touch --help Usage: touch [OPTION]…

pyqt 按钮常用格式Qss设置

pyqt 按钮常用格式Qss设置 QSS介绍按钮常用的QSS设置效果代码 QSS介绍 Qt Style Sheets (QSS) 是 Qt 框架中用于定制应用程序界面样式的一种语言。它类似于网页开发中的 CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;但专门为 Qt 应用程序设计。使用 QSS&am…

数据分析--客户价值分析RFM(分箱法/标准化)

原数据 原数据如果有异常或者缺失等情况&#xff0c;要先对数据进行处理 &#xff0c;再进行下面的操作&#xff0c;要不然会影响结果的正确性 一、根据RFM计算客户价值并对客户进行细分 1. 数据预处理 1.1 创建视图存储 R、F、M的最大最小值 创建视图存储R 、F、M 的最大最小…

力扣练习题(2024/5/2)

1填充每个节点的下一个右侧节点指针 给定一个 完美二叉树 &#xff0c;其所有叶子节点都在同一层&#xff0c;每个父节点都有两个子节点。二叉树定义如下&#xff1a; struct Node {int val;Node *left;Node *right;Node *next; } 填充它的每个 next 指针&#xff0c;让这个…

C#知识|Dictionary泛型集合的使用总结

哈喽,你好,我是雷工! 以下是C#Dictionary泛型集合的学习笔记。 01 Dictionary泛型集合 1.1、Dictionary<K,V>通常称为字典, 1.2、其中<K,V>是自定义的,用来约束集合中元素类型。 1.3、在编译时检查类型约束, 1.4、无需装箱拆箱操作, 1.5、操作与哈希表(Ha…

C++ string类

目录 0.前言 1.为什么学习string类 1.1 C语言字符串的局限性 1.2 C string类的优势 2.标准库中的string类 2.1 字符串作为字符序列的类 2.2 接口与标准容器类似 2.3 基于模板的设计 2.4 编码和字符处理 3.string类的常用接口说明 3.1构造函数 3.1.1默认构造函数 3…

前端Web开发基础知识

HTML定义 超文本标记语言&#xff08;英语&#xff1a;HyperText Markup Language&#xff0c;简称&#xff1a;HTML&#xff09;是一种用于创建网页的标准标记语言。 什么是 HTML? HTML 是用来描述网页的一种语言。 HTML 指的是超文本标记语言: HyperText Markup LanguageH…

ELK Stack 8 接入ElasticFlow

介绍 Netflow v5 / v9 / v10&#xff08;IPFIX&#xff09;&#xff0c;支持大部分网络厂商及VMware的分布式交换机。 NetFlow是一种数据交换方式。Netflow提供网络流量的会话级视图&#xff0c;记录下每个TCP/IP事务的信息。当汇集起来时&#xff0c;它更加易于管理和易读。…

EasyExcel 处理 Excel

序言 本文介绍在日常的开发中&#xff0c;如何使用 EasyExcel 高效处理 Excel。 一、EasyExcel 是什么 EasyExcel 是阿里巴巴开源的一个 Java Excel 操作类库&#xff0c;它基于 Apache POI 封装了简单易用的 API&#xff0c;使得我们能够方便地读取、写入 Excel 文件。Easy…

常用AI工具分享 + IDEA内使用通义灵码

引言 随着人工智能技术的飞速发展&#xff0c;AI工具已经渗透到我们日常生活和工作的各个领域&#xff0c;带来了前所未有的便利。现在我将分享一下常用的AI工具&#xff0c;以及介绍如何在IDEA中使用通义灵码。 常用AI工具 1. 通义灵码 (TONGYI Lingma) - 由阿里云开发的智能…

Neo4j v5 中 Cypher 的变化

How Cypher changed in Neo4j v5 Neo4j v5 中 Cypher 的变化 几周前&#xff0c;Neo4j 5 发布了。如果你像我一样&#xff0c;在 Neo4j 4 的后期版本中忽略了所有的弃用警告&#xff0c;你可能需要更新你的 Cypher 查询以适应最新版本的 Neo4j。幸运的是&#xff0c;新的 Cyp…

【翻译】REST API

自动伸缩 API 创建或更新自动伸缩策略 API 此特性设计用于 Elasticsearch Service、Elastic Cloud Enterprise 和 Kubernetes 上的 Elastic Cloud 的间接使用。不支持直接用户使用。 创建或更新一个自动伸缩策略。 请求 PUT /_autoscaling/policy/<name> {"rol…

什么是UDP反射放大攻击,有什么安全措施可以防护UDP攻击

随着互联网的飞速发展和业务复杂性的提升&#xff0c;网络安全问题日益凸显&#xff0c;其中分布式拒绝服务&#xff08;DDoS&#xff09;攻击成为危害最为严重的一类网络威胁之一。 近些年&#xff0c;网络攻击越来越频繁&#xff0c;常见的网络攻击类型包括&#xff1a;蠕虫…