JavaSE函数

函数 / 方法:是一个解决特定问题的代码块,该代码块可以被反复使用

1、定义函数

语法格式:

访问修饰符 方法返回值类型 方法名称([参数列表]) [抛出异常] {方法体;[return 返回值;]
}

访问修饰符:

  •     public 这是公共,所有都可以访问
  •     private 这是私有的,只能自己访问
  •     protected 这是受保护的,只能它自己或它的子类访问

方法返回值类型:

  •     基本数据类型
  •     引用数据类型

方法名称:符合标识符的命名规则。

参数列表:

  1.     它在方法中可以是无参数的,如果有多个参数,则参数与参数之间使用英文逗号分隔
  2.     参数的声明格式为:参数类型 参数名称

抛出异常:

  1.     此部分是可以没有,如果有则需要使用 throws 来向外抛出
  2.     如果有多个异常,则使用逗号分隔

返回值:

  1.     如果方法执行后需要有返回值,则必须使用 return 关键字来返回
  2.     方法的返回值类型要与 return 后面的值的类型一致
  3.     如果方法返回返回值类型(如 void),那么方法中也可以没有 return 语句,也可以有。如果有 return 后不能有值。

2、函数执行原理

        每当调用一个方法时,系统会创建一个活动记录(也称为活动框架),用于保存方法中的参数和变量。活动记录置于一个内存去榆中,称为调用堆栈(call stack)。调用堆栈也称为执行堆栈、运行时堆栈,或者一个机器堆栈,常简称为“堆栈”。当一个方法调用另一个方法时,调用者的活动记录保持不动,一个新的活动记录被创建用于被调用的新方法。一个方法结束返回到调用者时,其相应的活动记录也被释放

3、函数重载

如果在一个类中有多个方法的名称相同,它的参数列表不同。那么这些方法就构成了重载方法

3.1 重载方法的特点

如何判断方法是否是重载方法,可以根据它的特点来判断。重载方法具有以下特点:

  1. 方法名称必须相同

  2. 参数列表必须不同(包括参数类型、参数顺序、参数个数)

  3. 与方法的返回值无关

  4. 必须是在同一个类中

4、函数的递归

所谓递归就是函数的内部调用其本身。在使用递归时,必须要有一个出口来退出递归的操作,否则需要产生栈溢出的错误

例:计算 6! 的值

1)非递归的实现:

public class MethodDemo04 {public static void main(String[] args) {int n = 6;System.out.println(recursion(n));}public static int recursion(int x) {int sum = 1;for (int i = x; i >= 1; i--) {sum *= i;}return sum;}
}

2)递归的实现

public class MethodDemo05 {public static void main(String[] args) {System.out.println(recursion(6));}public static int recursion(int x) {if (x == 1) return 1;else return x * recursion(x -1);}
}

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

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

相关文章

Android中的本地广播与全局广播

文章目录 1. 概念介绍2. 本地广播3. 全局广播 1. 概念介绍 前文我们介绍了Android中的广播,按注册方式分为静态广播和动态广播;按接收顺序分为有序广播与无序广播 本文我们按照广播的传播范围,将广播分为本地广播和全局广播 本地广播&#x…

算法——排序

快速排序&#xff1a; http://t.csdnimg.cn/iGs34 void QuickSort(int array[], int low, int high) {int i low; int j high;if(i > j) {return;}int temp array[low];while(i ! j) {while(array[j] > temp && i < j) {j--;}while(array[i] < temp &…

算法设计-杨辉三角

链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 来源&#xff1a;牛客网 题目描述 杨辉三角形又称Pascal三角形&#xff0c;它的第i1行是(ab)i的展开式的系数。 它的一个重要性质是&#xff1a;三角形中的每个数字等于它两肩上的数字相加。 下面给出了杨辉三角形的…

超详细的fiddler教程

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Fiddler&#xff08;中文名称&#xff1a;小提琴&#xff09;是…

sparksql的shuffle分区数设置

SparkSQL的shuffle默认分区数设置 在SparkSQL中当Job中产生Shuffle时&#xff0c;默认的分区数(spark.sql.shuffle.partitions)为200,在实际项目中要合理的设置&#xff0c;特别是本地场景&#xff0c;一般支持不了200个分区。 可以设置在&#xff1a; 配置文件&#xff1a;c…

【算法题】三道题理解算法思想--滑动窗口篇

滑动窗口 本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题&#xff0c;我从力扣上筛选了三道题&#xff0c;难度由浅到深&#xff0c;会附上题目链接以及算法原理和解题代码&#xff0c;希望大家能坚持看完&#xff0c;绝对能有收获&#xff0c;大家有更好的思…

win11 安装SIBR 3dgs

1.安装显卡驱动 下载地址&#xff1a; 官方驱动 | NVIDIA下载适用于 GeForce、TITAN、NVIDIA RTX、数据中心、GRID 等 NVIDIA 产品的新驱动。https://www.nvidia.cn/Download/index.aspx?langcn 2.安装cuda 下载地址&#xff1a;如果无法打开&#xff0c;切换.com为.cn&am…

对java元空间的理解

Java 8 引入了元空间&#xff08;Metaspace&#xff09;&#xff0c;取代了之前的永久代&#xff08;Permanent Generation&#xff09;。以下是我对 Java 元空间的理解&#xff1a; 存储类元数据&#xff1a;元空间用于存储类的元数据信息&#xff0c;如类名、方法信息、字段信…

LeetCode6. Z 字形变换(Java)

将一个给定字符串 s 根据给定的行数 numRows &#xff0c;以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时&#xff0c;排列如下&#xff1a; P A H N A P L S I I G Y I R 之后&#xff0c;你的输出需要从左往右…

JavaScript基础练习题之计算数组元素的和与平均值

一、如何使用JavaScript计算数组元素的和与平均值&#xff1f; 二、正确的源程序 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title>计算数组元素的和与平均值</title></head><body><h1>计算数组元…

两直线交点算法 C

求两直线交点算法 有中间交点 CD在AB异侧 且AB在CD异侧 AB在CD异侧 但 CD在AB同侧 无中间交点 A B A C A B A D \nobreak AB \times AC \newline AB \times AD ABACABAD 异号 叉乘后相乘小于零 等于零的几种情况 A B C与AB共线 D与AB共线 求交点&#xff0c;可由面积比…

iOS - LLVM的中间代码(IR)

文章目录 iOS - LLVM的中间代码&#xff08;IR&#xff09;1. 转为汇编代码2. 中间代码&#xff08;IR&#xff09;2.1 Objective-C在变为机器代码之前&#xff0c;会被LLVM编译器转换为中间代码&#xff08;Intermediate Representation&#xff09;2.2 可以使用以下命令行指令…

Spring Cloud的原理涉及多个组件和概念

核心部分的详细解释 服务注册与发现&#xff1a;这是Spring Cloud的核心功能之一。通过使用Eureka、Consul或Zookeeper等服务注册中心&#xff0c;服务提供者将自己的信息注册到注册中心&#xff0c;服务消费者通过注册中心查询可用的服务列表。服务消费者在需要调用其他服务时…

排序算法 - 堆排序

文章目录 目录 文章目录 前言 1 . 堆排序原理 2 . 堆排序实现 总结 前言 大家好,今天给大家介绍一下常见排序算法中的堆排序(填坑) 1 . 堆排序原理 堆排序是一种基于二叉堆数据结构的排序算法&#xff0c;它利用堆的性质进行排序。堆是一种完全二叉树&#xff0c;分为最…

如何为nginx配置环境变量-linux(-bash: nginx: 未找到命令)

我在安装nginx后&#xff0c;输入nginx 始终提示:"-bash: nginx: 未找到命令" 只能使用&#xff1a;“ /usr/local/nginx/sbin/nginx ” 此文是对执行 nginx -s reload 命令 提示未找到的解决方案&#xff01; 避免浪费时间&#xff01;&#xff01;&#x…

武忠祥《660题》高效刷题包+资料分享

660题的难度书虽然比较难&#xff0c;对于基础的考察比较深入&#xff0c;所以&#xff0c;有没有一种可能&#xff0c;做题太慢&#xff0c;是因为基础不好导致的&#xff01; 所以再继续做下去&#xff0c;就没有什么意义了&#xff0c;因为这就像是用一把钝刀去砍树&#x…

网络安全渗透测试工具

网络安全渗透测试常用的开发工具包括但不限于以下几种&#xff1a; Nmap&#xff1a;一款网络扫描工具&#xff0c;用于探测目标主机的开放端口和正在运行的服务&#xff0c;是网络发现和攻击界面测绘的首选工具。Wireshark&#xff1a;一个流量分析工具&#xff0c;用于监测网…

C++之struct和class区别

在C中 struct和class唯一的区别就在于 默认的访问权限不同 区别&#xff1a; struct 默认权限为公共 class 默认权限为私有 class C1 {int m_A; //默认是私有权限 };struct C2 {int m_A; //默认是公共权限 };int main() {C1 c1;c1.m_A 10; //错误&#xff0c;访问权限是私…

VS2022 使用ClaudiaIDE设置自定义图片背景

ClaudiaIDE的下载 第一步&#xff0c;如下图所示&#xff0c;点击&#xff1a;扩展——管理扩展。 第二步&#xff0c;如下图所示&#xff0c;点击&#xff1a;联机——右上角输入ClaudiaIDE搜索——点击下载。 下载后关闭所有VS窗口&#xff0c;然后等待弹出一个安装窗口&…

Java基础【多线程】

什么是线程 线程&#xff08;Thread&#xff09;是计算机科学中的一个重要概念&#xff0c;指的是在单个程序内部同时执行的一条独立的指令序列。简而言之&#xff0c;线程就是在一个进程内部并发执行的一段代码。每个线程都有自己的执行路径&#xff0c;可以独立地执行代码&a…