Java基础_0206:方法的定义与使用

方法的基本概念

方法的主要功能是封装可以执行的一段代码,这样不仅可以进行重复调用,更可以方便的实现代码的维护,而本次使用的方法定义语法如下所示。

public static 返回值类型 方法名称(参数类型 参数变量, ...) {方法体(本方法要执行的若干操作) ;[return [返回值] ;]
}

在本定义格式之中,发现方法有一个返回值类型,指的是这个方法返回结果,对于此类的类型可以有两种:
直接设置Java中的数据类型(基本数据类型、引用数据类型),

  • 如果方法设置了返回值,那么必须使用return语句返回与之数据类型对应的数据;
  • 方法没有返回值:void,可以不使用return返回内容,但是可以使用return结束方法调用。
定义一个没有参数没有返回值的方法
public class TestDemo {public static void main(String args[]) {printInfo();        // 直接调用方法printInfo();        // 直接调用方法}/*** 信息输出操作*/public static void printInfo() {    // 定义没有参数,没有返回值的方法System.out.println("*********************");System.out.println("*   www.yootk.com   *");System.out.println("*********************");}
}程序执行结果: 
*********************
*   www.yootk.com   *
*********************
*********************
*   www.yootk.com   *
*********************
定义一个有参数无返回值的方法

public class TestDemo {public static void main(String args[]) {pay(10.0);          // 调用方法pay(-10.0);         // 调用方法}/*** 定义一个支付的操作方法,如果支付金额大于0则正常支付,否则会输出错误提示信息* @param money 要支付的金额*/public static void pay(double money) {  // 购买支付操作if (money > 0.0) {  // 现在已经给钱System.out.println("可以进行支付!");} else {        // 不能够支付System.out.println("你穷疯了,没钱还买东西!");}}
}
程序执行结果: 可以进行支付!(“pay(10.0)”调用执行)
你穷疯了,没钱还买东西!(“pay(-10.0)”调用执行)
定义有返回值有参数的方法
public class TestDemo {public static void main(String args[]) {int result = add(10, 20);       // 方法的返回值可以进行接收System.out.println("计算结果:" + result);System.out.println("计算结果:" + add(50, 60));  // 也可以直接将方法返回值进行输出}/*** 实现数据的加法操作* @param x 操作数字一* @param y 操作数字二* @return 返回两个数字的加法计算结果*/public static int add(int x, int y) {   // 有参数有返回值的方法return x + y;       // 返回加法计算结果}
}程序执行结果:
计算结果:30
计算结果:110
利用return结束方法调用

如果在方法中执行return语句,那么就表示其之后的代码不再执行而直接结束方法调用,如果此时方法有返回值声明,那么必须返回相应类型的数据,如果没有返回值声明,则可以直接编写return。而此类操作一般都会结合分支判断一起使用。

public class TestDemo {public static void main(String args[]) {set(100);           // 正常执行输出set(3);         // 满足方法判断条件,会中断输出操作set(10);            // 正常执行输出}/*** 定义一个设置数据的操作方法,如果该数据为3将无法设置* @param x 要设置的数据内容*/public static void set(int x) { // 方法声明为voidif (x == 3) {   // 判断语句return;     // 方法后面的内容不执行了}System.out.println("x = " + x);}
}
程序执行结果: 
x = 100
x = 10

方法的重载

方法重载指的是方法名称相同,参数的类型或个数不同,调用的时候将会按照传递的参数类型和个数完成不同的方法体的执行。
如果说现在有一个方法名称,有可能要执行多项操作,例如:一个add()方法,它可能执行两个整数的相加,也可能执行三个整数的相加,或者可能执行两个小数的相加,那么在这样的情况,很明显,一个方法体肯定无法满足于要求,需要为add()方法定义多个不同的功能实现,所以此时就需要方法重载概念的支持。

观察方法重载
public class TestDemo {public static void main(String args[]) {// 方法重载之后执行时会根据传入参数的类型或个数的不同调用不同的方法体System.out.println("两个整型参数:" + add(10, 20)); System.out.println("三个整型参数:" + add(10, 20, 30)); System.out.println("两个浮点型参数:" + add(10.2, 20.3)); }public static int add(int x, int y) {   // add()方法一共被重载三次return x + y;}public static int add(int x, int y, int z) {    // 与之前的add()方法的参数个数不一样return x + y + z;}public static double add(double x, double y) {  // 与之前的add()方法的参数类型不一样return x + y;}
}

方法的递归调用

递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,但是在进行递归操作的时候必须满足如下的几个条件:

  • 必须有结束条件;
  • 每次调用的时候都需要改变传递的参数。
public class TestDemo {public static void main(String args[]) {System.out.println(sum(100));   // 1 - 100累加}/*** 数据的累加操作,传入一个数据累加操作的最大值,而后每次进行数据的递减,将一直累加到计算数据为1* @param num 要进行累加的操作* @return 数据的累加结果*/public static int sum(int num) {    // 最大的内容if (num == 1) {         // 递归的结束调用return 1;       // 最终的结果返回了一个1}return num + sum(num - 1);  // 递归调用}
}
程序执行结果: 
5050

转载于:https://www.cnblogs.com/xuwei1/p/8338349.html

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

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

相关文章

redis 登录_Redis集群架构+Dubbo开发框架+SSO单点登录+Nginx+ZooKeeper

Redis集群架构【课程介绍】Redis是现在使用为广泛的NoSQL数据库技术,其自身不仅拥有着良好的操作性能,也被广泛的应用于各种集群架构的数据整合处理之中,而本课程将通过Redis的核心作用,以及单实例redis存在的问题为读者进行分析&…

ajax 提交 .net ispostback不执行,ASP.NET基于Ajax的Enter键提交问题分析

本文实例讲述了ASP.NET基于Ajax的Enter键提交。分享给大家供大家参考,具体如下:近日遇到一个Enter键的问题,总结下:1. 首先复习下html form对Enter的响应,不同的浏览器对Enter的处理略有不同,这里采用IE7A.…

mysql-用正则表达式进行搜索

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较,mysql允许你指定正则表达式,过滤select检索出的数据。但是mysql仅仅支持正则表达式的一个子集。 1、基本字符匹配: select prod_n…

python爬虫课程大纲_马哥2018python全栈+爬虫+高端自动化课程大纲

资源内容: 马哥2018python全栈爬虫高端自动化课程大纲|____51项目八-跳板机.rar|____50项目七-运维流程系统.rar|____49项目六-任务调度系统scheduler.rar|____48项目五CMDB资产管理.rar|____47项目四-多人博客开发.rar|____46(项目三)React开发及Todolist项目.rar|…

NopCommerce用.net core重写ef

最近看了NopCommerce源码,用core学习着写了一个项目,修改的地方记录下。项目地址 NopCommerce框架出来好久了。18年的第一季度 懒加载出来后也会全部移动到.net core。那么就更好玩了。 项目内容 模仿部分分层模式引擎机制DI容器EF仓储模式Mapping部分修…

服务器u8系统数据库不存在,用友u8服务器端数据库不装

用友u8服务器端数据库不装 内容精选换一换本章节指导您使用MongoDB客户端,通过弹性云服务器内网方式连接GaussDB(for Mongo)集群实例。操作系统使用场景:弹性云服务器的操作系统以Linux为例,客户端本地使用的计算机系统以Windows为例。目标实…

ie传递给系统调用的数据区域太小_内存区域与内存溢出异常

自动内存管理机制运行时数据区:Java虚拟机定义了在程序执行期间使用的各种运行时数据区域。其中一些数据区域是在Java虚拟机启动时创建的,仅在Java虚拟机退出时销毁。其他数据区域是每个线程所占的空间。线程数据区域是随着线程销毁和创建的。PC 寄存器(…

0010服务器无对应信息,服务器版本对应的内存

服务器版本对应的内存 内容精选换一换硬件要求如表1所示。操作系统要求如表2所示。上表中所需Ubuntu下载地址:服务器1:Ubuntu 18.04.1镜像包、Ubuntu 16.04.4 镜像包。服务器2:Ubuntu 16.04.3 镜像包。在安装操作系统过程中“选择软件列表”时…

idea中连接mysql插入成功数据 在navicat中刷新表格没有数据_MySQL入门简记

1、MySQL和Navicat的安装下载地址:MySQL官方网站 https://dev.mysql.com/downloads双击下载的mysql-installer-community-8.0.17.0 .msi开始安装。需要注意(Authentication Method)这一步:因为需要使用客户端navicat,在…

jdbc执行sql 不支持“variant”数据类型。

把查询出来的列转换下类型 select cast(a as varchar(500)) from bcast( as varchar(500)) 转载于:https://www.cnblogs.com/zhousiwei/p/10625694.html

for循环数据量太大_中文文本分类roberta大力出奇迹之数据量大的问题

问题描述: 笔者在文本分类场景中使用了robertapooldense的三分类模型。采用预训练模型做项目的时候经常苦于数据太少,模型泛化性差,因此收集了1300W数据。在我尝试暴力出奇迹的时候,遇到了部分问题,在此记录一下。一. 数据预处理时…

谁决定了人的选择?

是好恶? 还是利益? 你看到的 是4个 圆点 还是 一头 大象? 用 利益 来衡量人的动机 当 不能解释的 时候 用情感 来弥补 那些 你最喜欢的 往往 是 最伤害你的 转载于:https://www.cnblogs.com/fangtengfei/p/8362125.html

future.cancel不能关闭线程_彻底弄懂线程池-newFixedThreadPool实现线程池

public class ExecutorServiceTest {public static void main(String[] args) throws IOException, InterruptedException {// 创建一个固定大小的线程池ExecutorService service Executors.newFixedThreadPool(3);for (int i 0; i < 10; i) {System.out.println("创…

Spring实战(十三)Spring事务

1、什么是事务&#xff08;Transaction&#xff09;&#xff1f; 事务是指逻辑上的一组操作&#xff0c;要么全部成功&#xff0c;要么全部失败。 事务是指将一系列数据操作捆绑成为一个整体进行统一管理。如果某一事务执行成功&#xff0c;则该事务中进行的所有数据更改均会提…

python enumerate_Python中enumerate用法详解

enumerate()是python的内置函数、适用于python2.x和python3.x enumerate在字典上是枚举、列举的意思 enumerate参数为可遍历/可迭代的对象(如列表、字符串) enumerate多用于在for循环中得到计数&#xff0c;利用它可以同时获得索引和值&#xff0c;即需要index和value值的时候可…

java定时任务详解

首先,要创建你自己想要定时的实体类 Service("smsService")Transactionalpublic class SmsSendUtil { Autowired private SmsDao smsDao; Autowired private ShortLinkService shortLinkService; private Logger logger Logger.getLogger(this.getClass()); 下面的这…

解密SVM系列(二):SVM的理论基础(转载)

解密SVM系列&#xff08;二&#xff09;&#xff1a;SVM的理论基础 原文博主讲解地太好了 收藏下 解密SVM系列&#xff08;三&#xff09;&#xff1a;SMO算法原理与实战求解 支持向量机通俗导论&#xff08;理解SVM的三层境界&#xff09; 上节我们探讨了关于拉格朗日乘子…

cout输出数组_让程序从1开始一直执行++操作,10秒钟能输出最大的数是多少

问题描述如果写一段代码&#xff0c;让程序从 1 开始一直执行 操作&#xff0c;在规定的 10s 钟内&#xff0c;你能输出的最大数是多少&#xff1f;并将它打印到屏幕上。乍一看&#xff0c;你会觉得它是一道算法题&#xff0c;再细想&#xff1a;不对&#xff01;这可能是一道…

网络安全-使用HTTP动词篡改的认证旁路

这个东西去年的安全扫描都没有&#xff0c;今天就扫出来了&#xff0c;非常奇怪的一个东西。好吧&#xff0c;找资料找原因。结果可能应为搜索名词的原因&#xff0c;这个问题在群友的帮助下解决了。 在我理解中servlet只有post和get方法&#xff0c;然后结果怎么出来这么多奇奇…

python爬取知乎问题_python爬取知乎首页问题

我的代码如下&#xff1a;importurllib.requestimporthttp.cookiejarurl_a"https://www.zhihu.com/"url_a"https://www.zhihu.com/explore"url_b"https://www.zhihu.com/signup?next%2F"head... 我的代码如下&#xff1a; import urllib.reques…