滚雪球学Java(37):深入了解Java方法作用域和生命周期,让你写出更高效的代码

news2024/11/27 9:38:28

🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!!


前言

  在Java开发中,方法是程序的基本构建块之一。在编写Java代码时,必须了解Java方法的作用域和生命周期。这将有助于您更好地编写高效的Java代码。

摘要

  本文将深入了解Java方法的作用域和生命周期,包括方法的访问修饰符、方法内部变量的作用域、方法的生命周期等。同时,本文还将通过源代码、方法介绍、测试用例等方式,让您更好地理解Java方法的相关知识。

正文

方法的访问修饰符

  Java方法的访问修饰符有public、protected、private和默认四种。

  • public方法可以被任何类和任何包中的其他代码访问。
  • protected方法可以被同一包中的代码访问,也可以被不同包中的子类访问。
  • private方法只能被同一类中的其他方法调用,不能被其他类访问。
  • 默认方法(没有修饰符)只能被同一包中的代码访问。

方法内部变量的作用域

  在Java方法内部定义的变量,只能在该方法中使用。这些变量被称为局部变量。局部变量的生命周期从方法开始执行时开始,到方法执行结束时结束。

方法的生命周期

Java方法的生命周期可以分为四个阶段。

  1. 编译时
    方法的编译时阶段,主要是对方法进行语法分析和编译,生成字节码文件。

  2. 类加载时
      当类被加载时,方法也会被加载到内存中。此时,会为方法分配一块栈空间。在方法被调用时,栈空间会被使用,存储方法中定义的局部变量和方法的执行状态。

  3. 执行时
      当方法被调用时,会创建一个新的栈帧(Stack Frame),用于存储方法的局部变量和执行状态。方法执行完毕后,栈帧会被弹出,释放栈空间。

  4. 卸载时
      当类被卸载时,与之关联的方法也会被卸载。此时,方法中使用的内存空间会被释放。

源代码

public class MethodScopeDemo {
    private int privateNumber = 10;
    protected int protectedNumber = 20;
    public int publicNumber = 30;

    public void publicMethod() {
        int localVariable = 100;
        // 在此处可以访问 privateNumber、protectedNumber 和 publicNumber
        // 无法访问其他类中定义的 private 变量
    }

    protected void protectedMethod() {
        int localVariable = 200;
        // 在此处可以访问 protectedNumber 和 publicNumber
        // 无法访问其他类中定义的 private 变量
    }

    private void privateMethod() {
        int localVariable = 300;
        // 在此处可以访问 privateNumber 和 publicNumber
        // 无法访问其他类中定义的 protected 和 private 变量
    }

    void defaultMethod() {
        int localVariable = 400;
        // 在此处可以访问 publicNumber
        // 无法访问其他类中定义的 protected、private 和默认变量
    }
}

代码方法介绍

  • publicMethod:公共方法,可以被其他类和其他包中的代码访问。
  • protectedMethod:保护方法,可以被同一包中的代码访问,也可以被不同包中的子类访问。
  • privateMethod:私有方法,只能被同一类中的其他方法调用,不能被其他类访问。
  • defaultMethod:默认方法(没有修饰符),只能被同一包中的代码访问。

测试用例

public class MethodScopeDemoTest {
    @Test
    public void testPublicMethod() {
        MethodScopeDemo demo = new MethodScopeDemo();
        demo.publicMethod();
    }

    @Test
    public void testProtectedMethod() {
        MethodScopeDemo demo = new MethodScopeDemo();
        demo.protectedMethod();
    }

    @Test
    public void testPrivateMethod() {
        MethodScopeDemo demo = new MethodScopeDemo();
        demo.privateMethod();
    }

    @Test
    public void testDefaultMethod() {
        MethodScopeDemo demo = new MethodScopeDemo();
        demo.defaultMethod();
    }
}

全文小结

  本文深入了解了Java方法的作用域和生命周期,包括方法的访问修饰符、方法内部变量的作用域、方法的生命周期等。同时,本文还通过源代码、方法介绍、测试用例等方式,让读者更好地理解Java方法的相关知识。掌握了这些知识后,读者可以编写更高效的Java代码。

附录源码

  如上涉及所有源码均已上传同步在 Gitee,提供给同学们一对一参考学习,辅助你更迅速的掌握。

总结

  Java方法是程序的基本构建块之一,必须了解Java方法的作用域和生命周期。在实际开发中,应选择合适的访问修饰符,定义方法内部的局部变量,合理使用栈空间等,以提高程序的执行效率。同时,还应编写测试用例,保证程序的正确性。

☀️建议/推荐你


  无论你是计算机专业的学生,还是对编程有兴趣的小伙伴,都建议直接毫无顾忌的学习此专栏「滚雪球学Java」,bug菌郑重承诺,凡是学习此专栏的同学,均能获取到所需的知识和技能,全网最快速入门Java编程,就像滚雪球一样,越滚越大,指数级提升。

📣关于我


我是bug菌,CSDN | 掘金 | infoQ | 51CTO 等社区博客专家,历届博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,华为云 | 阿里云| 腾讯云等社区优质创作者,全网粉丝合计15w+ ;硬核微信公众号「猿圈奇妙屋」,欢迎你的加入!免费白嫖最新BAT互联网公司面试题、4000G pdf电子书籍、简历模板等海量资料。

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

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

相关文章

微信重磅更新!有人已经涨粉好几万了!

公众号又更新了。 一个是发布功能升级,新发布的内容将展示在公众号主页,并有机会获得平台推荐。但仍然不会推送给用户,这是除了次数以外,和群发文章仅有的区别了。 ▲ 图片来源:微信公众号平台 不过目前仅支持用网页…

Android调用相机拍照,展示拍摄的图片

调用相机(隐式调用) //自定义一个请求码 这里我设为10010int TAKE_PHOTO_REQUEST 10010;int RESULT_CANCELED 0;//定义取消码//触发监听,调用相机image_camera.setOnClickListener(new View.OnClickListener() {Overridepublic void onCli…

Network: use `--host` to expose

vite 启动项目提示 Network: use --host to expose 同事不能通过本地IP地址访问项目 解决方案:package.json中启动命令配置本地IP地址 vite --host 192.168.200.252

windows11中安装curl

windows11中安装curl 1.下载curl curl 下载地址:curl 2.安装curl 2.1.解压下载的压缩包 解压文件到 C:\Program Files\curl-8.3.0_1-win64-mingw 目录 2.2.配置环境变量 WINS 可打开搜索栏,输入“编辑系统环境变量” 并按回车。 3.可能遇到的问题 3…

天地图绘制区域图层

背景&#xff1a; 业务方要求将 原效果图 参考效果图 最终实现效果 变更点&#xff1a; 1.将原有的高德地图改为天地图 2.呈现形式修改&#xff1a;加两层遮罩&#xff1a;半透明遮罩层mask区域覆盖物mask 实现过程&#xff1a; 1.更换地图引入源 <link rel"style…

BI系统上的报表怎么导出来?附方法步骤

在BI系统上做好的数据可视化分析报表&#xff0c;怎么导出来给别人看&#xff1f;方法有二&#xff0c;分别是1使用报表分享功能&#xff0c;2使用报表导出功能。下面就以奥威BI系统为例&#xff0c;简明扼要地介绍这两个功能。 1、报表分享功能 作用&#xff1a; 让其他同事…

SqlServer备份与还原 System.Data.SqlClient.SqlError: 媒体集有 2 个媒体簇,但只提供了 1 个。必须提供所有成员

System.Data.SqlClient.SqlError: 媒体集有 2 个媒体簇,但只提供了 1 个。必须提供所有成员。 (Microsoft.SqlServer.Smo) 这是由于你备份时&#xff0c;没有去掉默认的C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\数据库名.bak&#xff0c;而又添加了一个新路…

【扩散生成模型】Diffusion Generative Models

提出扩散模型思想的论文&#xff1a; 《Deep Unsupervised Learning using Nonequilibrium Thermodynamics》理解 扩散模型综述&#xff1a; “扩散模型”首篇综述论文分类汇总&#xff0c;谷歌&北大最新研究 理论推导、代码实现&#xff1a; What are Diffusion Models?…

【办公小神器】:快速批量转换Word、Excel、PPT为PDF脚本!

文章目录 ✨哔哩吧啦✨脚本使用教程✨温馨小提示设置&#x1f4da;资源领取 专栏Python零基础入门篇&#x1f525;Python网络蜘蛛&#x1f525;Python数据分析Django基础入门宝典&#x1f525;小玩意儿&#x1f525;Web前端学习tkinter学习笔记Excel自动化处理 ✨哔哩吧啦 前…

Linux 安装 git

一 . 安装git 方式1&#xff1a;通过yum 安装 yum -y install git查看是否安装成功 git --version安装目录在&#xff1a;/usr/libexec/git-core yum 安装有一些缺点 &#xff1a;不能自己指定安装目录、安装版本 方式 2 下载tar.gz 包 配置 查看git 版本&#xff1a;Index…

windows11专业版下安装ubuntu20终端应用

主要步骤如下&#xff1a; https://blog.csdn.net/i_ziyu/article/details/127603934 https://blog.csdn.net/qq_17525509/article/details/122287051 搜索windows功能&#xff1a; 在设置里面&#xff1a; 设置–更新和安全–开发者选项 打开开发者模式。 去应用商店下载&a…

ChatGPT实战-构建文章分析AI聊天机器人

视频版本&#xff1a; ChatGPT实战-构建文章分析AI聊天机器人 简介 本文实现如下功能&#xff1a; 当浏览一篇文章&#xff0c;点击分享&#xff0c;分享到聊天软件的对话框中。它就会生成一个文章的总结和分析结果。例如分析是否有逻辑问题&#xff0c;是否有诱导购买&#…

基于SSM+Vue的在线购书商城系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

浅谈 React 与 Vue 更新机制的差异

前言 哈喽&#xff0c;大家好&#xff0c;我是 Baker &#xff01;&#x1f389; 对于前端的 Vue 和 React 相信大家并不陌生&#xff0c;这两个库有着截然不同的设计思想和发展目标&#xff0c;对于我们上层使用者来说&#xff0c;研究它们的差异不仅让我们更加深入的去理解…

使用自定义插槽(slot)来将数据传递给插槽内容。el-step

description为描述性文字&#xff0c;需使用slot来自定义文字。 A 是 Vue 3 中的语法糖&#xff0c;用于简洁地定义插槽。用来绑定step组件中description。step可使用插槽 B是绑定date数据实现自定义描述文字。

VoxWeekly|The Sandbox 生态周报|20230918

欢迎来到由 The Sandbox 发布的《VoxWeekly》。我们会在每周发布&#xff0c;对上一周 The Sandbox 生态系统所发生的事情进行总结。 如果你喜欢我们内容&#xff0c;欢迎与朋友和家人分享。请订阅我们的 Medium 、关注我们的 Twitter&#xff0c;并加入 Discord 社区&#xf…

linux安装配置 flume

目录 一 解压安装包 二 配置部署 &#xff08;1&#xff09;修改配置 &#xff08;2&#xff09;下载工具 &#xff08;3&#xff09;创建配置文件 &#xff08;4&#xff09;启动监听测试 &#xff08;5&#xff09;flume监控文件 一 解压安装包 这里提供了网盘资源 链…

狂热过后,RPA到底是什么?

随着科技的不断进步&#xff0c;人工智能正在逐步渗透到各个领域&#xff0c;并不断演变&#xff0c;成为更加便捷的方式步入万家&#xff0c;让科技的变革的春风吹入了千行百业&#xff0c;落入千家万户。而“RPA”&#xff08;Robotic Process Automation&#xff0c;即机器人…

视频去LOGO的方法,AI自动完美地去除视频LOGO

喜欢做影视剧剪辑的朋友&#xff0c;可能会遇到下载的影视剧本身存在字幕、台标的情况&#xff0c;这些和新的剪辑主题不相符的原片元素&#xff0c;都会影响我们最终的成片效果。不过也无需烦恼哦&#xff0c;我们可以利用AI视频处理工具&#xff0c;自动去除视频中的logo或其…

6个超好用的团队任务管理工具,帮你解决团队工作任务“杂乱难”

当团队面临大量任务和复杂工作时&#xff0c;任务管理往往变得杂乱且困难。为了提高团队效率和组织能力&#xff0c;许多团队都在寻找适合他们需求的任务管理工具。在这篇文章中&#xff0c;我们将介绍6个超级好用的团队任务管理工具&#xff0c;它们可以帮助团队更好地组织、分…