码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 这道静态变量题,我居然考了0分


    摘要:只有在Main.a调用了这个静态变量进行+1操作之后,静态变量的值才真正的改变了。

    本文分享自华为云社区《【Java基础】Java static静态变量分析》,作者:gentle_zhou。

    今天在学习java编程基础知识的时候,里面有一道题考的是静态变量。

    刚看到这题,觉得幸福来得太突然,这题也太简单了,果断选答案为1,然后就错了。。。

    看了答案为0之后,并不是太能理解,于是先去分析了一下static变量的概念。

    “Static静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。当Java虚拟机(JVM)加载类时,就会执行该代码块。被static修饰的成员变量和成员方法独立于该类的任何对象。”

    也就是说在class的开头申明的时候,static int a 为0。然后在modify()方法里,对传进来的参数a进行了+1操作,但是并没有影响static int a。只有当我们在modify() 方法里用了X.a++ 对静态变量对象进行+1操作之后,a的值才真正地进行了更新。

    下面附上我的测试代码:

    1. public class Main {
    2. private static int a;
    3. public static void main(String[] args) {
    4. System.out.println("2nd test " + a);
    5. modify(a);
    6. System.out.println("5th test " + a);
    7. Main.a++;
    8. System.out.println("final test " + a);
    9. }
    10. public static void modify(int a) {
    11. System.out.println("3nd test " + a);
    12. a++;
    13. System.out.println("4th test " + a);
    14. }
    15. //编译的时候就来执行这一段了,所以Main.a 为5
    16. static {
    17. System.out.println("test " + a);
    18. Main.a = 5;
    19. System.out.println("1st test " + a);
    20. }
    21. }

    得到的结果如下:

    test 0
    1st test 5
    2nd test 5
    3nd test 5
    4th test 6
    5th test 5
    final test 6

    从结果我们就可以看出来,在modify()方法里,a的值有改变,但是并没有改变static int a这个对象的值;只有在Main.a调用了这个静态变量进行+1操作之后,静态变量的值才真正的改变了,于是我们看到final test为6.

    点击关注,第一时间了解华为云新鲜技术~

     

  • 相关阅读:
    Linux虚拟服务器LVS了解使用
    Python中上下文管理器解析
    真香警告,低代码平台免费获取攻略来了!
    python用socket实现简易局域网UDP组播屏幕分享
    心肺运动试验----各类参数分析笔记
    自学(网络安全)黑客——高效学习2024
    arm-三盏灯流水
    投稿期刊选择-中科院期刊分区排名查询(以光学类为例) -论文投稿经验总结-第2期
    基于JAVA,SpringBoot和HTML校园二手商城系统设计
    堪称2022最强Java八股文面试题汇总
  • 原文地址:https://blog.csdn.net/devcloud/article/details/124988807
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号