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、无参数无返回值 --- 打印三行helloWorld
    public 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);  // 10
        a = 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]); // 20
        a[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和算法等,欢迎讨论哦

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

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

相关文章

杰发科技AC7801——IO模拟IIC注意事项

7801的参考手册没有说清楚 7840说明了用开漏 使用办法

Java 支持表情包存储 Incorrect string value: ‘\\xF0\\x9F\\x98\\x8A\\xF0\\x9F...‘

一&#xff0c;前言 最近测试提出了一个比较刁钻的bug 在提交表单数据的时候&#xff0c;支持表情输入&#xff0c;如下 看了一下前端参数&#xff0c;也是正常传递 但是调用接口的时候&#xff0c;后端却报错 Cause: java.sql.SQLException: Incorrect string value: \\xF0…

梯度、散度、旋度

目录 梯度Gradient —— Scalar -> Vector 散度Divergence —— Vector -> Scalar 旋度Curl —— Vector -> Vector 梯度Gradient —— Scalar -> Vector 即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变化最快&#xff0c;变化率最大&#x…

绿色物流:跨境电商的可持续发展之路

随着跨境电商的迅猛发展&#xff0c;物流体系的可持续性问题引起了广泛关注。绿色物流作为一种可持续发展的解决方案&#xff0c;在实现商品流通的同时&#xff0c;致力于减少环境影响。本文将深入探讨跨境电商在绿色物流方面的挑战和可行性&#xff0c;探寻可持续发展的路径。…

爬虫网易易盾滑块案例:某乎

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、滑块初步分析 js运行 atob(‘aHR0cHM6Ly93d3cuemhpaHUuY29tL3NpZ25pbg’) 拿到网址&#xff0c;浏览器打开网站&#xff0…

Go使用vscode开发,必备的插件及最常用快捷键和代码自动补全

一、vscode必备插件 1.Go、Code Runner 2.Markdown All in One、Markdown Preview Enhanced、Paste Image 为进行Markdown文档编写提供很多快捷键和自动补全功能&#xff0c;使vscode可以完全代替Typora。 边写边看到Markdown渲染之后的样子&#xff0c;在 Preview 界面按住鼠…

添加一个编辑的小功能(PHP的Laravel)

一个编辑的按钮可以弹出会话框修改断更天数 前台 加一个编辑按钮的样式&#xff0c;他的名字是固定好的 之前有人封装过直接用就好&#xff0c;但是一定放在class里面&#xff0c;不要放在id里面 看见不认识的方法一定要去看里面封装的是什么 之前就是没有看&#xff0c;所以…

透明OLED屏,应用范围极其广泛,看看您在的行业是否存在

随着科技的飞速发展&#xff0c;显示技术也在不断创新。其中&#xff0c;透明OLED屏作为一种新型显示技术&#xff0c;以其独特的透明特性和优秀的画质表现&#xff0c;正逐渐在各个领域崭露头角。作为一名在尼伽OLED透明屏部门&#xff0c;专注于OLED技术研发的工程师&#xf…

2024年软件测试行业如何发展呢?测试人该怎么办?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、表面"衰落…

编译 nccl-tests 项目

1&#xff0c;编译 下载源代码 git clone --recursive https://github.com/NVIDIA/nccl-tests.git 编译源代码 cd nccl-tests/ make -j 2&#xff0c;运行 cd ./build/ ./all_reduce_perf --help ./all_reduce_perf -b 8 -e 256M -f 2 -g 4 效果图&#xff1a; 3&#…

BUG汇总

20240103 通用&#xff0c;驼峰命名法&#xff0c;mybatis。 mybatis入门程序中&#xff0c; // 获取对象的顺序为&#xff1a;SqlSessionFactoryBuild-》SqlSessionFactory-》SqlSessionSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();I…

相机同步遇到的小问题

出现问题 在进行两个相机显示的时候&#xff0c;出现了相机显示不同步的情况&#xff0c;具体情况如下视频所示&#xff1a; 华睿/大华相机左右相机显示不同步 可以见到视频之中&#xff0c;右相机是比左相机更快一点的&#xff0c;但是有的时候就是同步的。我调用的代码是现成…

python scoket

import socket# 监听本机的IP和端口 sock socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.bind((10.10.10.170, 9000))sock.listen(10) while True:# 3.等待连接请求的申请&#xff0c;有人来连接&…

QC/PD快充电源产品MOS选型分析

• 原边650-700V SJ MOSFET采用低FOM值的ESM 技术&#xff0c;有利于提高系统效 率&#xff0c; 以及更佳的EAS和EMI等特性&#xff0c;对于一些不含PFC电路的系统更友好。 • 副边采用低FOM值的SGT同步整流电路&#xff0c;相比肖特基二极管整流能有更低的 损耗&#xff0c;有…

一网打尽所有主流平台的实时热榜

今日热榜 一网打尽所有主流平台的实时热榜https://tophub.today

电脑视频剪辑软件哪个好用

电脑视频剪辑软件是当今创作者不可或缺的工具之一&#xff0c;它们能够帮助我们在电脑上对视频进行编辑、剪辑、特效添加等操作&#xff0c;使我们的作品更加专业、精美。然而&#xff0c;在众多的视频剪辑软件中&#xff0c;该选择哪一个呢&#xff1f;本文将为你推荐2款非常好…

知虾电商(Shopee):东南亚领先电商平台的十大关键特点**

知虾电商&#xff08;Shopee&#xff09;作为东南亚地区领先的电子商务平台&#xff0c;由Sea Group&#xff08;前称Garena&#xff09;在2015年创立。知虾电商以移动优先的策略迅速崛起&#xff0c;为用户提供了一个便捷、安全的在线购物环境。以下是知虾电商的一些关键特点&…

新年福利|这款价值数万的报表工具永久免费了

随着数据资产的价值逐渐凸显&#xff0c;越来越多的企业会希望采用报表工具来处理数据分析&#xff0c;了解业务经营状况&#xff0c;从而辅助经营决策。不过&#xff0c;企业在选型报表工具的时候经常会遇到以下几个问题&#xff1a; 各个报表工具有很多功能和特性&#xff0c…

Vue(三):Vue 生命周期与工程化开发

2023 的最后一篇博客&#xff0c;祝大家元旦快乐&#xff0c;新的一年一起共勉&#xff01; 06. Vue 生命周期 6.1 基本介绍 生命周期就是一个 Vue 示例从 创建 到 销毁 的整个过程&#xff0c;创建、挂载、更新、销毁 有一些请求是必须在某个阶段完成之后或者某个阶段之前执行…

网页在线预览编辑Office,支持doc/docx、xls/xlsx、ppt/pptx、pdf等格式

随着互联网技术的不断发展&#xff0c;越来越多的企业开始采用在线办公模式&#xff0c;微软Office Word 是最好用的文档编辑工具&#xff0c;然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的&#xff0c;如果可以实现Web在线预览编辑Of…