Java方法的基本用法

Java方法的基本用法

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


前言

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

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


一、什么是方法

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

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

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

方法存在的意义

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

示例

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


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()语句打印出计算结果。
在这里插入图片描述
这个代码中使用双重循环, 比较容易写错

二、方法定义语法

基本语法

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

代码示例

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

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 语句), 就执行完毕, 回到方法调用位置继续往下执行.

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

代码示例

计算两个整数相加

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!

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;
    }
}

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

四、实参和形参的关系

代码示例

交换两个整型变量

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;
    }
}

在这里插入图片描述

原因分析

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

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

int a = 10;
int b = 20;
int x = a;
int y = b;
int tmp = x;
x = y;
y = tmp;

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

解决办法

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

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

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;
    }
}

在这里插入图片描述

五、没有返回值的方法

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

代码示例

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);
    }
}

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


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

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

相关文章

如果有多个文件夹,怎么快速获得文件夹的名字呢

上一篇写到怎么批量建立文件夹&#xff0c;那么怎么获取批量文件夹的名字呢&#xff1f; 一、啊这&#xff0c;这真是一个好问题二、这个得用Python&#xff08;文本末尾有打包程序&#xff0c;点击链接运行就可以了&#xff09;&#xff08;1&#xff09;首先建立一个py文件&a…

类的组合、作用域与可见性、类的静态成员、单例模式、

类的组合 一个类内嵌其他类的对象作为成员的情况 has - a组合 初始化列表的另一用途&#xff1a;为了调用数据成员的带参构造函数 能够层层递进 class Line { public:Line(int x1 0, int y1 0, int x2 0, int y2 0);Line(const Line &other);~Line();Line(const Po…

linux mail命令及其历史

一、【问题描述】 最近隔壁组有人把crontab删了&#xff0c;crontab这个命令有点反人类&#xff0c;它的参数特别容易误操作&#xff1a; crontab - 是删除计划表 crontab -e 是编辑&#xff0c;总之就是特别容易输入错误。 好在可以通过mail命令找回&#xff0c;但是mai…

恭喜!国内医生喜提哈佛大学布莱根妇女医院访问学者邀请函

【校园简介】 布莱根妇女医院(Brigham and Women’s Hospital&#xff0c;BWH)位于马萨诸塞州波士顿的哈佛医学区&#xff0c;毗邻于哈佛医学院校园&#xff0c;是哈佛大学医学院的主要附属医院之一。位于马萨诸塞州波士顿的布莱根妇女医院有12项成人学科位居全国权威,并在耳鼻…

【Linux】详解线程控制之线程创建线程终止线程等待线程分离

一、线程创建 thread&#xff1a;这是一个指向pthread_t类型的指针&#xff0c;用于获取新创建线程的线程ID。在调用pthread_create后&#xff0c;这个指针会被设置为新线程的ID。 attr&#xff1a;这是一个指向pthread_attr_t类型的指针&#xff0c;用于设置线程的属性&#x…

网络工程师备考1——基础学习

认识设备 1 交换机 一、什么是交换机&#xff1f; 实现不同电脑之间数据的转发 换机是一种用于电(光)信号转发的网络设备。 它可以为接入交换机的任意两个网络节点提供独享的电信号通路。最常见的交换机是以太网交换机。交换机工作于OSI参考模型的第二层&#xff0c;即数据…

SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务)

SpringBoot3整合阿里云短信服务-1(配置阿里云短信服务) 一、开通阿里云短信服务 阿里云官网:阿里云官网 选择产品中企业服务与云通信中的短信服务 选择免费开通 选择快速学习和测试 根据这几个全部配置一下我这里是配置好了所以学习进度是100% 1.1 添加资质 首先选择新增资质 …

SpringBoot发送邮箱

一、导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId> </dependency> 二、添加配置 application.yml文件 将username修改为自己的邮箱&#xff0c;password修改为…

【Vue】Vue2使用ElementUI

目录 Element UI介绍特点Vue2使用Element安装引入ElementUI组件库 使用ElementUI用户注册列表展示其他 mint-ui介绍特点安装组件引入组件Mint-ui相关组件 Element UI 介绍 官网(基于 Vue 2.x ):https://element.eleme.cn/#/zh-CN ElementUI 是一个基于 Vue.js 的桌面端组件库…

基于Arduino的电梯超载报警系统

企鹅&#xff1a;2583550535 项目和论文都有 第1章 绪论.............................................................................................................................. 1 1.1 项目背景及意义........................................................…

ABP.VNET 项目结构

想要了解ABP分层架构&#xff1a;ABP分层架构-CSDN博客 可以看此篇文章 apb.vnet 生成的项目的目录结构 .Application 项目 应用服务用于将领域(业务)逻辑暴露给展现层。 展现层通过传入DTO(数据传输对象)参数来调用应用服务&#xff0c;而应用服务通过领域对象来执行相应的…

【网络安全】2030年十大新兴网络安全威胁

欧盟网络安全局&#xff08;ENISA&#xff09;已发布了一份全面的清单&#xff0c;列出了预计到2030年将影响数字领域的十大新兴网络安全威胁。 该预测是为期八个月的广泛研究的成果&#xff0c;融合了ENISA前瞻专家小组、CSIRTs网络以及欧盟CyCLONe专家的见解。 这项研究突显…

抖音小店无货源怎么做?从开店到发货,最全教程来了!

哈喽~我是电商月月 近几年&#xff0c;抖音的发展如火如荼&#xff0c;抖音小店也吸引了大批新手商家入驻 那抖音小店具体流程到底怎么做&#xff1f;无货源的商家去哪找货&#xff1f;怎么上架&#xff0c;如何推流? 不知道&#xff1f; 今天我就给大家讲一下抖音小店从开…

[集群聊天服务器]----(五)User类、UserModel类

接着上文[集群聊天服务器]----(四)MySQL数据库模块&#xff0c;接下来我们对User类、UserModel类进行剖析&#xff0c;User表和UserModel类是项目最基本也是最重要的部分&#xff0c;通过它我们对用户的id&#xff0c;用户名&#xff0c;密码&#xff0c;状态相关信息进行存储&…

数据分析【方差分析】四

方差分析的核心 什么是方差分析:方差分析是假设检验的一种延续与扩展,主要用于多个总体均值(三组或三组以上均值)是否相等做出假设检验,研究分类型自变量对数值型因变量的影响。 它的零假设和设备假设分别为: 单因素方差分析的前提条件 独立性 组内独立(随机抽样、…

<string.h>中部分库函数的模拟实现

前言 嗨&#xff0c;我是firdawn&#xff0c;本章将简单介绍&#xff0c;<string.h>中部分库函数的模拟实现&#xff0c;如strncpy&#xff0c;strncat&#xff0c;memcpy&#xff0c;memmove。在本文片末&#xff0c;还讲简单介绍判断机器大小端的函数实现&#xff0c;…

【Linux】LAMP集群分布式安全方案

LAMP集群分布式安全方案主要涉及确保Linux、Apache、MySQL和PHP&#xff08;LAMP&#xff09;组合构成的集群环境的安全性和稳定性。 本次实验通过网络层安全对防火墙配置&#xff1a;使用防火墙&#xff08;如iptables或firewalld&#xff09;来限制对集群的访问&#xff0c;只…

设计模式在芯片验证中的应用——单例

一、单例模式 单例模式(Singleton)是一种创建型设计模式&#xff0c;能够保证一个类只有一个实例&#xff0c; 并提供一个访问该实例的全局节点。验证环境配置(configuration)类、超时(timeout)处理类等可以使用单例实现。比如说验证环境需要在特定场景中监测特定接口上的超时事…

AI+BI?国内期待值最高的4款智能问答类BI产品测评

AI大模型的这股风终是吹到了数据分析圈。与传统BI相比&#xff0c;问答BI进一步降低了数据获取门槛&#xff0c;通过对话的方式就可以访问数据并得出相应结论&#xff0c;更方便业务人员快速上手分析数据&#xff01; 问答BI&#xff08;Q&A BI&#xff09;在数据分析领域…

【论文笔记】| 定制化生成PuLID

PuLID: Pure and Lightning ID Customization via Contrastive Alignment ByteDance, arXiv:2404.16022v1 Theme: Customized generation 原文链接&#xff1a;https://arxiv.org/pdf/2404.16022 Main Work 提出了 Pure 和 Lightning ID 定制 (PuLID)&#xff0c;这是一种用于…