Java方法的基本用法

Java方法的基本用法

  • 前言
  • 一、什么是方法
    • 方法存在的意义
    • 示例
  • 二、方法定义语法
    • 基本语法
    • 代码示例
    • 注意事项
  • 三、方法调用的执行过程
    • 基本规则
    • 代码示例
      • 计算两个整数相加
      • 计算 1! + 2! + 3! + 4! + 5!
  • 四、实参和形参的关系
    • 代码示例
      • 交换两个整型变量
        • 原因分析
        • 解决办法
  • 五、没有返回值的方法
    • 代码示例


前言

推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默,对我帮助很大。我想与大家分享这个宝藏网站,请点击下方链接查看。
https://www.captainbed.cn/f1

Java方法的基本用法包括定义方法(指定方法名、返回类型、参数列表和方法体),调用方法(通过方法名及参数列表调用),以及传递参数(按值传递基本数据类型,按引用传递对象)。


一、什么是方法

方法就是一个代码片段. 类似于 C 语言中的 “函数”.

Java方法是Java语言中用于执行特定任务的一段代码。它是程序的基本构建块之一,常用于组织和封装可重复使用的功能。方法可以接受输入参数,并返回一个值,也可以不接受参数或返回值。在调用方法时,需要提供所需的参数,并根据方法的定义来处理和返回结果。通过使用方法,可以提高代码的可读性、可维护性和重用性。在Java中,每个方法都属于一个类或对象,并且可以在其他方法中调用。方法的语法如下:

java">修饰符 返回类型 方法名(参数列表) {// 方法体// 执行特定任务的代码return 返回值; // 如果方法有返回值的话
}

方法存在的意义

  1. 是能够模块化的组织代码(当代码规模比较复杂的时候).
  2. 做到代码被重复使用, 一份代码可以在多个位置使用.
  3. 让代码更好理解更简单.
  4. 直接调用现有方法开发, 不必重复造轮子

示例

计算 1! + 2! + 3! + 4! + 5!

java">
public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {int tmp = 1;for (int j = 1; j <= i; j++) {tmp *= j;}sum += tmp;}System.out.println("sum = " + sum);
}

这段代码的作用是计算1! + 2! + 3! + 4! + 5! 的值,并打印出结果。

在程序运行过程中,使用嵌套的两个for循环来计算每个阶乘。外层的for循环从1遍历到5,表示计算1!到5!的值。内层的for循环从1遍历到当前的外层循环变量i的值,表示计算每个数字的阶乘。

在内层循环中,创建一个临时变量tmp,并将其初始化为1。内层循环每次迭代都将tmp乘以当前的j值,从而计算阶乘值。最后,将每个阶乘值加到外层循环的变量sum中。

最后,通过System.out.println()语句打印出计算结果。
在这里插入图片描述
这个代码中使用双重循环, 比较容易写错

二、方法定义语法

基本语法

java">// 方法定义
public static 方法返回值 方法名称([参数类型 形参 ...]){方法体代码;[return 返回值];}// 方法调用
返回值变量 = 方法名称(实参...);

代码示例

实现一个方法实现两个整数相加

java">class Test {public static void main(String[] args) {int a = 10;int b = 20;// 方法的调用int ret = add(a, b);System.out.println("ret = " + ret);}// 方法的定义public static int add(int x, int y) {return x + y;}
}

注意事项

  1. publicstatic 两个关键字在此处具有特定含义, 我们暂时不讨论, 后面文章会详细介绍.
  2. 方法定义时, 参数可以没有. 每个参数要指定类型
  3. 方法定义时, 返回值也可以没有, 如果没有返回值, 则返回值类型应写成 void
  4. 方法定义时的参数称为 “形参”, 方法调用时的参数称为 “实参”.
  5. 方法的定义必须在类之中, 代码书写在调用位置的上方或者下方均可.
  6. Java 中没有 “函数声明” 这样的概念

三、方法调用的执行过程

基本规则

  • 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.

  • 当方法被调用的时候, 会将实参赋值给形参.

  • 参数传递完毕后, 就会执行到方法体代码.

  • 当方法执行完毕之后(遇到 return 语句), 就执行完毕, 回到方法调用位置继续往下执行.

  • 一个方法可以被多次调用

代码示例

计算两个整数相加

java">class Main {public static void main(String[] args) {int a = 10;int b = 20;System.out.println("第一次调用方法之前");int ret = add(a, b);System.out.println("第一次调用方法之后");System.out.println("ret = " + ret);System.out.println("第二次调用方法之前");ret = add(30, 50);System.out.println("第二次调用方法之后");System.out.println("ret = " + ret);}public static int add(int x, int y) {System.out.println("调用方法中 x = " + x + " y = " + y);return x + y;}
}

在这里插入图片描述

计算 1! + 2! + 3! + 4! + 5!

java">class Main {public static void main(String[] args) {int sum = 0;for (int i = 1; i <= 5; i++) {sum += factor(i);}System.out.println("sum = " + sum);}public static int factor(int n) {System.out.println("计算 n 的阶乘中! n = " + n);int result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}
}

在这里插入图片描述
使用方法, 避免使用二重循环, 让代码更简单清晰.

四、实参和形参的关系

代码示例

交换两个整型变量

java">class Main {public static void main(String[] args) {int a = 10;int b = 20;swap(a, b);System.out.println("a = " + a + " b = " + b);}public static void swap(int x, int y) {int tmp = x;x = y;y = tmp;}
}

在这里插入图片描述

原因分析

刚才的代码, 没有完成数据的交换.

对于基础类型来说, 形参相当于实参的拷贝. 即 传值调用

java">int a = 10;
int b = 20;
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;

可以看到, 对 xy 的修改, 不影响 ab.

解决办法

传引用类型参数 (例如数组来解决这个问题)

关于数组我会在后面文章进行讲解

java">class Main {public static void main(String[] args) {int[] arr = {10, 20};swap(arr);System.out.println("a = " + arr[0] + " b = " + arr[1]);}public static void swap(int[] arr) {int tmp = arr[0];arr[0] = arr[1];arr[1] = tmp;}
}

在这里插入图片描述

五、没有返回值的方法

方法的返回值是可选的. 有些时候可以没有的.

代码示例

java">class Main {public static void main(String[] args) {int a = 10;int b = 20;print(a, b);}public static void print(int x, int y) {System.out.println("x = " + x + " y = " + y);}
}

在这里插入图片描述
另外, 如刚才的交换两个整数的方法, 就是没有返回值的.



http://www.ppmy.cn/news/1462763.html

相关文章

gpt-4o考场安排

说明 &#xff1a;经过多次交互&#xff0c;前后花了几个小时&#xff0c;总算完成了基本功能。如果做到按不同层次分配考场&#xff0c;一键出打印结果就完美了。如果不想看中间“艰苦”的过程&#xff0c;请直接跳到“最后结果”及“食用方法”。中间过程还省略了一部分交互&…

第十六讲:数据在内存中的存储

第十六讲&#xff1a;数据在内存中的存储 1.整数在内存中的存储1.1存储方式1.2大小端字节序1.3大小端字节序排序规则1.4为什么要有大小端1.5练习1.5.1练习11.5.2练习21.5.3练习31.5.4练习41.5.5练习51.5.6练习61.5.7练习7 2.浮点数在内存中的存储2.1练习2.2浮点数的存储2.3浮点…

Nginx将https重定向为http进行访问的配置(附Demo)

目录 前言1. Demo2. 彩蛋前言 对应nginx的基本知识推荐阅读: Nginx配置静态网页访问(图文界面)Nginx从入门到精通(全)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)由于网站默认无配置https,但输入网址的时候浏览器默认带https,导致网页一直无法访问…

JS逆向之企名科技

文章目录 初步分析定位js编写完整代码参考文献初步分析 目标网址:企名科技 抓包分析,发现是post请求 请求代码如下: #!/usr/bin/env python3 # -*- coding: utf-8 -*- import requestsheaders = {Connection:

AI崛起,掌握它,开启智能新生活!

AI崛起&#xff0c;掌握它&#xff0c;开启智能新生活&#xff01; &#x1f604;生命不息&#xff0c;写作不止 &#x1f525; 继续踏上学习之路&#xff0c;学之分享笔记 &#x1f44a; 总有一天我也能像各位大佬一样 &#x1f3c6; 博客首页 怒放吧德德 To记录领地 &…

c#实现视频播放

在winform上实现视频播放常用的控件时media player&#xff0c;vs工具栏初始状态下没有&#xff0c;需要我们到com组件中添加。添加完成后&#xff0c;把media player控件拖拽到一个Form窗口中。 在此实现遍历某个文件夹下是否有mp4视频&#xff0c;如果有则播放视频。&#x…

vue3之使用图片实现类似于 el-radio 的单选框功能,并且可实现选中和取消选中

背景 我们在工作中常用的一般都是使用类似于 element-plus 中的 el-radio 或者是 el-checkbox 来实现单选或者多选 若有一天我们遇到了一个新的业务需求,需要使用 图片 来实现类似于 el-radio 的功能,并且要求实现第一次点击时处于选中状态,当我们再次点击时处于非选中状态…

双非本科,逆袭中大厂的 Java 学习路线

从零基础入门 Java&#xff0c;到最后秋招上岸&#xff0c;笔者也是花费了不少的经历&#xff0c;也走了很多弯路。这一篇文章会记录下真正有用的学习路线。 为什么要强调真正有用&#xff1f;网上的很多所谓从入门到求职&#xff0c;推荐的路线都超级长&#xff0c;零基础的同…

mysql相关知识总结

目录 1.建表2.添加字段3.修改字段类型4.添加索引5.遇到的问题 1.建表 CREATE TABLE test.table_test ( id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 主键id, day date DEFAULT NULL COMMENT 日期, show_cnt bigint(20) DEFAULT 0 COMMENT 曝光次数, play_time do…

小程序视频怎么保存到本地相册

在快节奏的生活中&#xff0c;小程序已成为我们获取信息和娱乐的重要渠道。但当您遇到那些精彩绝伦的小程序视频&#xff0c;是否曾想过如何将它们保存到本地相册&#xff0c;以便随时回味&#xff1f;无论您是安卓用户还是iPhone用户&#xff0c;本文将为您揭秘如何轻松实现这…

XH连接器>KH-XH-5A-Z

品  牌&#xff1a; kinghelm(金航标) 厂家型号&#xff1a; KH-XH-5A-Z 封装&#xff1a; 插件,P2.5mm 商品毛重&#xff1a; 0.429克(g) 包装方式&#xff1a; 袋装

深度学习500问——Chapter09:图像分割(5)

文章目录 9.12 DenseNet 9.13 图像分割的数据集 9.13.1 PASCAL VOC 9.13.2 MS COCO 9.13.3 Cityscapes 9.14 全景分割 9.12 DenseNet 这篇论文是CVPR2017年的最佳论文。 卷积神经网络结构的设计主要朝着两个方向发展&#xff0c;一个是更宽的网络&#xff08;代表&#xff1a…

“高考钉子户”唐尚珺决定再战2024年高考

“高考钉子户”唐尚珺决定在2024年再次参加高考&#xff0c;这个选择确实很特别也很有趣。十几年连续参加高考&#xff0c;他已经积累了大量的备考经验和应试技巧。这样的经验对于高考辅导机构来说无疑是非常宝贵的资源&#xff0c;他如果选择去辅导机构当老师&#xff0c;应该…

微软必应全球宕机事件分析及其对ChatGPT、Copilot等服务的影响

微软必应全球宕机事件分析及其对ChatGPT、Copilot等服务的影响 一、引言 在数字化时代&#xff0c;云计算和在线服务已成为人们日常生活和工作不可或缺的一部分。然而&#xff0c;当这些服务遭遇故障或宕机时&#xff0c;其影响范围往往远超出人们的想象。近期&#xff0c;微…

Prometheus监控平台配置--监控mysql

上一篇中讲述了怎么安装Prometheus&#xff0c;然后对服务器集群资源信息进行监控并通过grafana展示监控信息&#xff0c;在这一篇中我们只讲和mysql相关的监控&#xff0c;关于prometheus的监控原理以及安装可以看下上一篇。 1.上传 通过rz命令将安装包上传到任意目录&#xf…

分布式数据库HBase入门指南

目录 概述 HBase 的主要特点包括: HBase 的典型应用场景包括: 访问接口 1. Java API: 2. REST API: 3. Thrift API: 4. 其他访问接口: HBase 数据模型 概述 该模型具有以下特点&#xff1a; 1. 面向列: 2. 多维: 3. 稀疏: 数据存储: 数据访问: HBase 的数据模型…

Springboot+Vue项目-基于Java+MySQL的酒店管理系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

记录Python低代码开发框架zdppy_amcrud的开发过程

实现新增接口 基础代码 import env import mcrud import api import snowflakeenv.load(".env") db mcrud.new_env()table "user" columns ["name", "age"]async def add_user(req):data await api.req.get_json(req)values [d…

【html5】05-自定义属性-切换页面-tab栏新闻列表

引言 04篇的自定义小案例 效果 代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><style type"text/css">* {margin: 0;padding: 0;list-style: none;text-decoration: none;}.news {width: 4…

一个基于HOOK机制的微信机器人

一个基于✨HOOK机制的微信机器人&#xff0c;支持&#x1f331;安全新闻定时推送【FreeBuf&#xff0c;先知&#xff0c;安全客&#xff0c;奇安信攻防社区】&#xff0c;&#x1f46f;Kfc文案&#xff0c;⚡备案查询&#xff0c;⚡手机号归属地查询&#xff0c;⚡WHOIS信息查询…