Java重修第二天—学习”方法“

通过学习本篇文章可以掌握如下知识

1、方法的定义

2、方法在计算机中的执行流程。

3、方法使用时常见问题

4、Java中方法的参数传递机制

5、方法重载


1 方法是什么

方法是一种语法结构,它可以把一段代码实现的某种功能封装起来,以便重复利用。

方法的完整格式定义如下:

修饰符 返回值 方法名(形参列表) { 方法体; return 返回值; }

需求:加入现在有很多成需要需要进行两个整数的求和操作。代码显示:

// 掌握定义方法的完整定义
public class Method_02 {public static void main(String[] args) {int sum = sum(3, 4);System.out.println(sum);}
// !!!注意与上文中方法的完整格式做对比。public static  int sum(int a, int b) {return a+b;}
}

为什么举如此简单的例子,现在在回想一遍我们的场景,其他程序员就可以复用这个求和操作了。重在重复利用。

到现在应该对方法有所了解了吧(*^_^*)。Java中的方法,在CPP或者C中称为函数,其实是一个东西罢了。接下来我们将继续深入学习"方法"。

2 方法的其他形式

方法定义时:需要按照方法解决实际业务需求,需要考虑:

1、方法名是否规范易懂

2、方法是否需要接收参数

3、方法是否需要返回数据

public class Method_02 {public static void main(String[] args) {printHelloWorld();}// 1、无参数无返回值 --- 打印三行helloWorldpublic static void printHelloWorld() {for (int i = 0; i < 3; i++) {System.out.println("helloWorld");}}
}// 2、有参数无返回值// 3、无参数有返回值// 4、有参数有返回值// 由于比较简单,在此就举一个例子,其他的举一反三即可。

3 方法使用时常见问题

  • 方法在类中的位置放在前或者后时无所谓的,但一个方法不能定义在另一个方法里面

  • 方法声明void无返回值时,方法内部不能使用return;

  • return语句下面不能编写代码

  • 由于上述问题比较简单就不再据例子了,如果需要举例在评论区评论即可。

4 案例

求1-n的和

可以将其想象成一个梯形,(上底+下底)*高/2;

这里一般很考验编程和数学能力,只能慢慢积累了。或者可以使用for函数累加也可以的。

注意:要声明好,函数名,入参和返回值。

public class Method_02 {public static void main(String[] args) {int res = sum1_N(100);System.out.println(res);// 5050}public static int sum1_N(int n) {return (1+n)*(n)/2;}
}

判断一个数是否是偶数还是奇数

public class Method_02 {public static void main(String[] args) {boolean res = isOdd(100);System.out.println(res);}public static  boolean isOdd(int n) {return n % 2 != 0;}
}

以上举得例子都比较简单,重点是帮助了解方法的定义和使用,不在于考验编程能力。

5 方法在计算机中执行原理

首先要牢记一点:方法被调用的时候,是进入到栈内存中运行的。

例子如下:一个很简单的求和方法在main方法中被调用。

添加图片注释,不超过 140 字(可选)

【第一步】方法区加载MethodDemo的class文件

添加图片注释,不超过 140 字(可选)

【第二步】将main方法加入到栈内存然后执行main方法中的内容,这里先执行的是第一句代码

添加图片注释,不超过 140 字(可选)

【第三步】发现要调用sum方法,然后栈内存加载sum方法,随后就执行sum方法中的内容

添加图片注释,不超过 140 字(可选)

【第四步】sum中的方法执行完毕之后,sum方法从栈中弹出,将返回值赋值给re变量。

添加图片注释,不超过 140 字(可选)

【第五步】输出re变量值:30,至此全部执行完毕,虽然这个例子很简单,但是麻雀虽小五脏俱全,一个简单的方法调用内部却蕴含了全部的道理,应用到复杂的方法调用,例如递归,完全够用。

6 Java中方法的参数传递机制

public class Method_02 {public static void main(String[] args) {int a = 10;change(a);System.out.println(a);   // 10}private static void change(int a) {System.out.println("BeforeChange:" + a);  // 10a = 20;System.out.println(a);   // 20}
}
6.1 基本类型的参数传递

所谓的值传递:指的是在传输实参给方法的形参时,传输的时实参变量中存储值的副本。

注意这里用的措辞时副本,即修改副本不会影响原参数的数值。

可以按照之前的分析

在change方法执行完毕后,将要从栈内存中弹出,然后再执行 System.out.println(a); 时 返回为10。

6.2 引用类型的参数传递
public class Method_02 {public static void main(String[] args) {int[] arrs = {10,20,30};change(arrs);System.out.println(arrs[1]); // 60}private static void change(int[] a) {System.out.println("BeforeChange:" + a[1]); // 20a[1] = 60;System.out.println(a[1]);  // 60}
}

在执行修改前,堆内存中的值为10,20,30;执行arrs[1] = 222后变为:

因此输入arrs[1] 时候就为222了,注意引用类型和直接类型的区别,可以减少你以后写代码的错误。

7 方法重载

一个类中,出现多个方法的名称相同,但是他们的形参列表时不同的,那么这些方法称为方法重载。

要点:

1、方法名称相同,形参列表不同。

2、形参列表不同指的是,形参个数、类型、顺序不同,不关心形参名称。

public class Method_02 {public static void main(String[] args) {}public static void test(){}public static void test(int a) {}void test(double a) {}void test(double a ,int b){}void test(int a ,double b){}}

如果这篇文章对你有帮助,点个赞吧,有疑问的地方直接评论就可以了。

账号: 兜兜转转 - 知乎 (zhihu.com)

擅长领域:IRS通信仿真、Java和算法等,欢迎讨论哦

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

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

相关文章

第二百四十五

我们在上一章回中介绍了"修改页面导航中遇到的问题"沉浸式状态样相关的内容&#xff0c;本章回中将介绍如何修改Avatar的大小.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我们在正常使用CirCleAvatar组件时可以通过该组件的radius属性来修改它的…

目标检测-One Stage-YOLO v3

文章目录 前言一、YOLO v3的网络结构和流程二、YOLO v3的创新点总结 前言 根据前文目标检测-One Stage-YOLOv2可以看出YOLOv2的速度和精度都有相当程度的提升&#xff0c;但是精度仍较低&#xff0c;YOLO v3基于一些先进的结构和思想对YOLO v2做了一些改进。 提示&#xff1a;…

突破技术边界:R与jsonlite库探秘www.snapchat.com的数据之旅

概述 Snapchat是一款流行的社交媒体应用&#xff0c;它允许用户发送和接收带有滤镜和贴纸的照片和视频&#xff0c;以及创建和观看故事和发现内容。Snapchat的数据是非常有价值的&#xff0c;因为它可以反映用户的行为、偏好和趋势。然而&#xff0c;Snapchat的数据并不容易获…

【LMM 009】MiniGPT-4:使用 Vicuna 增强视觉语言理解能力的多模态大模型

论文描述&#xff1a;MiniGPT-4: Enhancing Vision-Language Understanding with Advanced Large Language Models 论文作者&#xff1a;Deyao Zhu∗ Jun Chen∗ Xiaoqian Shen Xiang Li Mohamed Elhoseiny 作者单位&#xff1a;King Abdullah University of Science and Techn…

亚信安慧AntDB数据库:企业核心业务系统数据库升级改造的可靠之选

在近期召开的“2023年国有企业应用场景发布会”上&#xff0c;亚信安慧公司的核心数据库产品AntDB闪耀登场&#xff0c;技术总监北陌先生针对企业核心业务系统数据库升级改造的关键议题发表了深度分享。他从研发、工程实施和运维管理三个维度细致剖析了当前企业在进行数据库升级…

Python - 深夜数据结构与算法之 DP - 进阶

目录 一.引言 二.经典算法实战 1.House-Robber [198] 2.House-Robber-2 [213] 3.Best-Sell-Time [121] 4.Best-Sell-Time-2 [122] 5.Best-Sell-Time-3 [123] 6.Best-Sell-Time-4 [188] 7.Best-Sell-Time-Coldown [309] 8. Best-Sell-Time-Fee [714] 三.总结 一.引言…

【React系列】父子组件通信—props属性传值

本文来自#React系列教程&#xff1a;https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 认识组件的嵌套 组件之间存在嵌套关系&#xff1a; 在之前的案例中&#xff0c;我们只是创建了一个组件App&…

基于粒子群算法的参数拟合,寻优算法优化测试函数

目录 摘要 测试函数shubert 粒子群算法的原理 粒子群算法的主要参数 粒子群算法原理 粒子群算法参数拟合 代码 结果分析 展望 基于粒子群算法的参数拟合(代码完整,数据齐全)资源-CSDN文库 https://download.csdn.net/download/abc991835105/88698417 摘要 寻优算法,测试…

后端开发——JDBC的学习(三)

本篇继续对JDBC进行总结&#xff1a; ①通过Service层与Dao层实现转账的练习&#xff1b; ②重点&#xff1a;由于每次使用连接就手动创建连接&#xff0c;用完后就销毁&#xff0c;这样会导致资源浪费&#xff0c;因此引入连接池&#xff0c;练习连接池的使用&#xff1b; …

x-cmd pkg | tig - git 文本模式界面

目录 简介首次用户功能特点类似工具与竞品进一步探索 简介 tig 由 Jonas Fonseca 于 2006 年使用 C 语言创建的 git 交互式文本命令行工具。旨在开启交互模式快速浏览 git 存储库的信息以及 git 命令的运行。 首次用户 使用 x tig 即可自动下载并使用 在终端运行 eval "…

微服务之间互相调用出现的错误

场景&#xff1a; 微服务A调用微服务B的接口&#xff0c;微服务B的接口请求方式是get类型&#xff0c;传递的参数是JSON格式。 错误&#xff1a; 1、postman&#xff1a;springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserial…

Gin 框架介绍与快速入门

Gin 框架介绍与快速入门 文章目录 Gin 框架介绍与快速入门一、Gin框架介绍1. 快速和轻量级2. 路由和中间件3. JSON解析4. 支持插件5. Gin相关文档 二、基本使用1.安装2.导入3.第一个Gin 应用 三、应用举例四、Gin 入门核心1.gin.Engine2.gin.Context 一、Gin框架介绍 Gin是一个…

VitePress搭建Vite官方中文文档首页

✨专栏介绍 在当今数字化时代&#xff0c;Web应用程序已经成为了人们生活和工作中不可或缺的一部分。而要构建出令人印象深刻且功能强大的Web应用程序&#xff0c;就需要掌握一系列前端技术。前端技术涵盖了HTML、CSS和JavaScript等核心技术&#xff0c;以及各种框架、库和工具…

FinGPT——金融领域开源大模型

文章目录 背景论文摘要相关工作大型语言模型&#xff08;LLMs&#xff09;和ChatGPT金融领域的LLMs为什么需要开源的金融LLMs&#xff1f; 以数据为中心的方法用于FinLLMs金融数据和独特特性应对处理金融数据的挑战 FINGPT 概述&#xff1a;FINLLM 的开源框架数据来源面向金融N…

【常用排序算法】冒泡排序

冒泡排序 冒泡排序基本思想&#xff1a;N 个数的数组&#xff0c;经过N-1轮排序。 升序 大的值下沉&#xff0c;小的值上浮。降序 小的值下沉&#xff0c;小的字上浮 import java.util.Arrays; public class BubbleSort {public static void main(String[] args) {int[] values…

Git 对项目更新的时候提示错误 repository not owned by current user

遇到 Git 提示的错误信息为&#xff1a;repository not owned by current user 上图显示的是错误的信息。 问题和解决 出现上面错误信息的原因是当前文件夹的权限和 Git 的执行权限不一直导致的。 我们的问题是我们希望在网盘上使用 Git 更新克隆后的代码&#xff0c;但登录…

React Hook 原理,及如何使用Hook

一、 Hook使用规则 只在最顶层使用Hook 不要在循环&#xff0c;条件或嵌套函数中调用Hook&#xff1b; 只在组件函数和自定义hook中调用Hook Q1 &#xff1a; 为什么 hook 不能 在循环&#xff0c;条件或嵌套函数中调用Hook &#xff1f; A1&#xff1a; 因为这跟React的…

使用Kafka与Spark Streaming进行流数据集成

在当今的大数据时代&#xff0c;实时数据处理和分析已经变得至关重要。为了实现实时数据集成和分析&#xff0c;组合使用Apache Kafka和Apache Spark Streaming是一种常见的做法。本文将深入探讨如何使用Kafka与Spark Streaming进行流数据集成&#xff0c;以及如何构建强大的实…

【智慧地球】星图地球 | 星图地球超算数据工场

当前空天信息处理涉及并发并行的大量计算问题&#xff0c;需要高性能计算、智能计算联合调度&#xff0c;以此来实现多算力融合&#xff1b;而我国算力产业规模快速增长&#xff0c;超算算力资源正需要以任务驱动来统筹。 基于此&#xff0c;中科星图与郑州中心展开紧密合作&a…

从0开始python学习-39.requsts库

目录 HTTP协议 1. 请求 2. 响应 Requests库 1. 安装 2. 请求方式 2.1 requests.请求方式(参数) 2.2 requests.request() 2.3 requests.session().request() 2.4 三种方式之间的关联 3. 请求参数 3.1 params&#xff1a;查询字符串参数 3.2 data&#xff1a;Form表单…