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

简介: 【5月更文挑战第12天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!

🏆本文收录于「滚雪球学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编程,就像滚雪球一样,越滚越大,指数级提升。

目录
相关文章
|
2天前
|
Java
java处理pdf代码
java处理pdf代码
10 0
|
15小时前
|
安全 Java
Java 面向对象之旅:在封装的港湾中,找到代码的安宁。
【6月更文挑战第15天】封装是Java面向对象的核心,它保护了类的内部数据,如`Book`和`Student`类中的属性。通过设定私有成员和公共方法,代码更有序,防止直接访问导致的混乱。封装提供了一种控制数据交互的方式,确保安全,如`setGpa()`方法验证输入。这使得代码结构清晰,如同港湾中的船只,井然有序,赋予编程过程美感和安全感。在面向对象的旅程中,封装是我们的庇护所,助力我们构建更美好的程序世界。
|
1天前
|
算法 Java
Java关键字与保留字:如何正确使用,让你的代码“飞”起来!
【6月更文挑战第15天】Java编程中,关键字如"class"、"int"用于特定语法,保留字可能未来成为关键字。理解其含义和用法至关重要,避免用作标识符以防止未来冲突。正确使用如"for"控制循环,优化代码能提升效率,使程序运行更流畅。避免保留字,如"goto"、"const",查阅文档确保合规性。通过代码优化,让程序效率更高,代码飞行在技术的云端。
|
1天前
|
Java 编译器 程序员
【实战攻略】Java高手教你如何灵活运用if-else和switch,提升代码效率!
【6月更文挑战第14天】本文探讨了Java中if-else和switch语句的巧妙运用,通过示例展示了如何提升代码效率和可读性。通过使用Map重构if-else结构,使代码更简洁易维护;利用switch处理枚举类型,实现清晰的代码结构。在性能方面,switch在选项少时占优,而现代JIT编译器优化后的if-else适用于大规模字符串比较。理解并灵活运用这两种控制结构,能助你在Java编程中写出高效、易读的代码。
|
1天前
|
算法 Java 程序员
【程序员必看!】掌握这招if-else,你的Java代码将瞬间高大上!
【6月更文挑战第14天】本文介绍了if-else语句在程序设计中的重要性,通过示例展示其基本语法和复杂用法,如嵌套和else-if链。强调了避免过度嵌套、逻辑运算符的使用、保持一致性及添加注释等提升代码质量的技巧。学习并实践这些技巧,将使你的Java代码更优雅、高效,助你成为编程艺术家。
|
1天前
|
Java API 调度
深入解析Java线程状态与生命周期
深入解析Java线程状态与生命周期
9 1
|
1天前
|
存储 安全 Java
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
深入理解Java中的ThreadLocal机制:原理、方法与使用场景解析
10 2
|
2天前
|
存储 安全 Java
滚雪球学Java(60):深入解析Java中的Vector集合类!
【6月更文挑战第14天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
136 59
滚雪球学Java(60):深入解析Java中的Vector集合类!
|
2天前
|
Java
java图片处理代码
java图片处理代码
10 1
|
3天前
|
Java
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
Java读取txt文件和写入txt文件-多种方法-java读写文件-java读写
13 0