Java中方法的注意事项

news2025/7/5 15:30:45

C有函数,我们Java有方法!

  • 实参和形参的关系
  • 方法重载
  • public static

早在初始Java的那一个博客,我好像就给兄弟们说过,在Java中我们把以前认识到的函数叫做是方法,那么如果单单是为了讲一下方法最基本的使用规则,那我直接把我之前的那篇博客复制粘贴到work里,再把关键字 函数统统换成 方法不就行了?
但是那样显然不符合我的初衷,今天阿涛就在这里给兄弟们说一说,Java方法中需要特别注意的几点!

实参和形参的关系

首先我们要清楚的是,对于函数,只有在我们调用函数的时候,才会给函数开辟一块空间,好像是叫做函数栈帧来着?那同样的,我们高贵的main函数,它就是再牛,他也是一个函数啊,只不过main函数是我们程序的入口,我们就是从main函数进入程序的,所以一开始,我们就会给main函数开辟一块空间,然后每每创建一个变量啊,数组啊之类的,都会往这块函数栈帧底部填充,这好像是叫做一个什么压栈的过程,如果兄弟们水平够高,知道了那个那理解起来一定是事半功倍!但是如果兄弟们目前不懂那个,也无伤大雅,不足以对我们理解造成任何的影响!
那么作为Java新生,我们对于实参和形参的理解极有可能出现偏差,所以阿涛在这里会给兄弟们用代码辅佐以图文进行讲解!保会!

    public static void exc(int a,int b){
        a=20;
        b=10;
    }
    public static void main(String[] args) {
        int a=10;
        int b=20;
        System.out.println("a="+a+"  b="+b);
        exc(a,b);
        System.out.println("a="+a+"  b="+b);

大致的逻辑是,我们写一个exc方法 ,意图是改变我们a,b的值,我们在调用这个方法的前后,分别输出一下a,b看看效果!

在这里插入图片描述
不对劲,不对劲……
在这里插入图片描述
这一张图一拿出来,有没有轻轻敲醒兄弟们沉睡的心灵?兄弟们是不是有一种拨开云雾见天明的感觉?
正如我刚才说的,每一个方法都会有自己的一块空间,这块空间和外界是隔离的,也正因此,明明我们的实参已经是a了,但是我们仍然可以在方法中创建一个a来接收我们实参的值,那是不是也就是说明,我们方法中变量值的改变,其实也是跟我们实参没有任何关系的呢?改来改去,你改变的至始至终都是形参的值,关我实参何事?我这么说,兄弟们可懂?我知道,有的兄弟们肯定就要用那个什么返回值来反击我了,可是兄弟们如果我们使用实参去接受一个返回值的话,是不是也就是相当于一个赋值操作了?我们还是没有在我们的方法中实现对于实参的改变啊!
那这个时候,是不是比较懂C语言兄弟们就又要说了,我们可以取出a,b的地址,然后使用地址把ab的值给改了,很好,这位小兄弟很有前途,这就是我们后面要讲的关于引用的知识,但是现在的问题是,我们的Java并不是一个底层的语言,我们是没有办法去拿到变量的地址的……我知道你很急,但是你别急,办法总比困难多,我们现在只要理解好这个实参和形参的关系就很棒了!

方法重载

在一个类里,不可以有两个名字相同的方法,在一个方法里面不可以有两个名字相同的变量,这是我们之前的认识,而且这个认识绝对是三观很正,我们确实应该这样子理解,但是,如果我是说如果,我们想实现一个加法方法,但是我们的参数不可能一直是整数吧,做生意的有零有整很正常吧,那怎么办,我们只有一个sum 可以表示加法吧,难道一直sum1234 ?所以说我们的编程就是为了解决实际生活中的问题的,这时候我们适时引出重载这个概念!
先说重载的使用规则:
1.重载的方法,方法名必须一样!
2.重载的方法,参数列表可以不同(参数的类型,数目)!
3.我们对于重载的方法返回类型不做要求,无论一不一样不影响方法之间构成重载!
相信我,我们通过一个sum 重载,兄弟们就会记忆深刻!

    public static int sum(int a,int b,int c){
        return a+b+c;
    }
    public static double sum(double a,double b){
        return a+b;
    }
    public static int sum(int a,int b){
        return a+b;
    }

    public static void main(String[] args) {
        int a=sum(1,2);
        System.out.println(a);
        double b=sum(1.1,2.2);
        System.out.println(b);
        int c=sum(1,2,3);
        System.out.println(c);
        
    }

在这里插入图片描述
在这里插入图片描述
我们可以看到,就结果来说,我们应该是完美完成了任务,就我们写的重载的方法来说,是不是也是和我们之前讲的完全匹配?
此时应该会有好奇宝宝来问了:阿涛阿涛,我们写了这么多名字一样的方法,那程序时如何识别我们到底该使用哪一个呢?首先我们要知道为什么一个作用域里面不能够定义两个名称相同的标识符,这就涉及我们的方法签名的概念了,如果要深入我们的底层给兄弟们讲解可以是可以,但是那样只会加重兄弟们的负担,随着兄弟们知识层面的增长,以后自然会知道的!这里简单说一下就行:方法全路径名+参数列表+返回值类型,这就是我们方法签名的组成。

public static

相信一些细心的兄弟们发现了我们在每一个方法之前都是要加上这两个单词的,public 表示的是访问权限,static 表示的是这是一个静态的方法,就目前来说,我们写的每一个方法之前都加上这个就可以了,现在只要知其然,以后我会教大家如何知其所以然,理解过多反而容易忘记!
好的兄弟们,那么对于方法,我想讲的东西就这么多了,希望我的这篇博客能够帮助到大家!
百年大道,你我共勉!

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

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

相关文章

如何从0-1学习渗透测试?

要成为一名渗透测试员,想从基础学习需要先掌握下面这3块:1、学习硬件和网络渗透测试主要涉及网络和部分涉及硬件。2、操作系统和系统架构操作系统和系统架构在渗透测试中起着关键作用。系统操作涉及x86(32位)和x64(64位…

稳定性实践:开关和预案

在稳定性保障中,限流降级的技术方案,是针对服务接口层面的,也就是服务限流和服务降级。这里还有另外一个维度,就是业务维度,所以今天我们就从业务降级的维度来分享, 也就是开关和预案。 如何理解开关和预案…

AI与轨交并行,智慧服务伴乘客出行

“欢迎来到智能客服中心” “请选择您需要的服务” 大部分乘客在地铁站厅总能听见这样的提示音 而发出提示音的 正是智慧升级过后的地铁智能客服服务中心 地铁作为承载万千群众出行的工具 近年客流呈飞速增长态势 因此,轨道交通行业也正积极进行智慧化转型 …

C语言百日刷题第八天

前言 今天是刷题第8天,放弃不难,但坚持一定很酷~ 快来跟我一起刷题吧。刷题第八天目录前言71.打印7层杨辉三角形72.重新排列数组73.冒泡排序74.将数字变成0的操作次数75.四叶玫瑰数71.打印7层杨辉三角形 打印7层杨辉三角形 图案如下: 这个…

外企面试中的7 个 Android Lifecycle 重要的知识点

习惯性的每天都会打开 medium 看一下技术相关的内容,偶然看到一位大佬分享和 Android Lifecycle 相关的面试题,觉得非常的有价值。 在 Android 开发中 Android Lifecycle 是非常重要的知识点。但是不幸的是,我发现很多新的 Android 开发对 A…

准备pmp考试第13天

准备pmp考试第13天 32 31 感觉答案和题目没有关系 感觉答案和题目没有多大关系,题目看越多 错的越多,答案不按照问的回答,跑题了 30 29 28 PMP 激励:为某人采取行动提供了理由。 提高团队参与决策的能力并鼓励他们独立工作。这里面…

go - rune类型

一、简介 rune类型是Go语言的一种特殊数字类型。 rune是类型int32的别名,在所有方面都等急啊于它,用来区分字符值跟整数值。 Go语言通过rune处理中文,支持国际化多语言。 字符串由字符组成,字符的底层由字节组成,而一…

码神之路项目总结(二)

目录 一、登录功能 & 二、获取用户信息& 三、退出登录 四、登录拦截¥ 五、ThreadLocal保存用户信息¥ 六、文章详情 一、登录功能 & 请求接口: 思路: 1、首先接收前端传过来的用户名和密码,判断值是否为空…

知识图谱认知智能理论与实战----------第二章 知识图谱模式设计

文章目录一. 知识图谱模式二. 模式与本体三. 本体概论I. 模式与本体辨析II.本体的构成要素III.实体分类IV.实体分类四. 六韬法I. 场景II. 复用III. 事物IV. 联系V. 约束VI. 评价一. 知识图谱模式 实体:eg:法国,巴黎…关系:eg&…

深度学习入门(三十六)计算性能——异步计算、自动并行

深度学习入门(三十六)计算性能——异步计算、自动并行前言计算性能——异步计算教材1 异步计算1.1 通过后端异步处理1.2 小结2 自动并行2.1 基于GPU的并行计算2.2 并行计算与通信3.3 小结前言 核心内容来自博客链接1博客连接2希望大家多多支持作者 本文…

一起Talk Android吧(第四百一十三回:使用三角函数绘制正弦波)

文章目录整体思路图形讲解示例程序注意事项各位看官们,大家好,上一回中咱们说的例子是"Math类常用方法介绍",这一回咱们介绍的例子是使用三角函数绘制正弦波。闲话休提,言归正转,让我们一起Talk Android吧! …

leetcode-每日一题-1710-卡车上的最大单元数(简单,哈希,暴力)

今天的这道题其实很好读懂,因为很容易可以看出来暴力求解,但其实还是隐藏一个hash求解法很巧妙,因为我在很久之前就用过hash解答过这样类似的题,所以这个题也是可以使用的,可以看看我第二个hash解法 目录 暴力效率(效…

SBF vs. 火柴大王

生活中的一切都建立在自信之上。”Ivar Kreuger1929年10月28日,瑞典商人Ivar Kreuger出现在《时代》杂志的封面上。 他是当时美国最受关注的人物之一,因为他富有、有权势、神秘。Kreuger控制着四分之三的火柴生产和销售,在全球35个不同国家拥…

wy的leetcode刷题记录_Day43

wy的leetcode刷题记录_Day40 声明 本文章的所有题目信息都来源于leetcode 如有侵权请联系我删掉! 时间:2022-11-15 前言 今天时间比较多而且题目比较简单,应该能写三四道题。 目录wy的leetcode刷题记录_Day40声明前言1710. 卡车上的最大单元数题目介…

Spectacle源码编译方法

一、简介 Spectacle 是一个用于抓取桌面截图的简单应用程序。它可以抓取整个桌面、单个显示器、当前活动窗口、鼠标所在的窗口或是屏幕上的一块矩形区域的图像。截取的图像可被打印、发送到其他应用程序进行处理、或是直接保存下来。 Spectacle是archlinux wiki中推荐KDE使用…

刘二大人CNN

10.卷积神经网络(基础篇)_哔哩哔哩_bilibili 0、前一部分 卷积层 和 subsampling 叫做Feature Extraction特征提取器,后一部分叫做classification 1、每一个卷积核它的通道数量要求和输入通道是一样的。这种卷积核的总数有多少个和你输出通…

SpringBoot+Vue项目医院挂号系统的设计与实现

文末获取源码 开发语言:Java 使用框架:spring boot 前端技术:JavaScript、Vue 、css3 开发工具:IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库:MySQL 5.7/8.0 数据库管理工具:phpstudy/Navicat JDK版…

2.6 自定义srv python

功能介绍 以自定义数据类型为基础,完成一个节点作为服务器,另一个节点接收传送两个数字到服务端,服务端计算后反馈到客户端进行打印输出 1、工作空间 1.1 创建工作空间lee_ws mkdir -p ~/lee_ws/src cd ~/lee_ws/src/ catkin_init_worksp…

leetcode134.加油站 贪心法求解 (c++版本)

题目描述 题目比较长,明确以下这点就可以 gas数组是当前下标i加油站所能加的油cost数组是从当前下标i加油站到下一加油站所消耗的油那么gas [i]与cost [i] 的大小就决定了车辆能否从当前加油站出发到达下一加油站 上面三点非常重要是能正确做出题目的必须要求 其实…

字符流,编码表,字符流写数据,字符流读数据

文章目录前言字符流编码表字符串中的编码解码问题字符流写数据字符流读数据总结前言 因为近期考试原因,还有自身惰性的问题,小编最近停更了一段时间,随之而来的罪恶感让我又开启了自学与创作之路,学习这么久,自己虽然…