zoukankan      html  css  js  c++  java
  • 静态变量与局部变量

    • 参数表分配完毕后,再根据方法体内定义的变量的顺序和作用域分配。
    • 类变量有2次初始化机会,第1次是“准备阶段”,执行系统初始化,对类变量设置零值;还有1次是“初始化”阶段,赋予程序源在代码中定义的初始值。局部变量和类变量初始化不同的是,局部变量表不存在系统初始化过程,即一旦定义了局部变量必须要进行人为的初始化,否则将无法使用。
    • 局部变量在使用前,必须要经过显示赋值,否则编译通不过。在栈帧中,与性能调优最密切的就是局部变量表。在方法执行时,虚拟机使用局部变量表完成方法的传递。
    • 局部变量表中的变量也是重要的垃圾回收根节点,只要被局部变量表中直接或间接引用的对象都不会被回收。

    例如下面的代码是错的没有赋值不能使用

    public void test1( ){

      int m;

      system.out.println(m);

    }

    变量的分类:

    • 按照数据类型分为基本数据类型、引用数据类型
    • 按照在类中声明的位置分为:成员变量、局部变量,其中成员变量分为类变量和实例变量。成员变量在使用前都经历过默认的初始化赋值,类变量在链接中的准备阶段会给类变量默认赋值,到初始化阶段的时候会给类变量显式赋值即静态代码块赋值;实例变量是随着对象的创建会在堆空间中分配实例变量空间,并进行默认赋值。

    方法中定义的局部变量是否线程安全?

    当只有一个线程可以操作此数据,则必然是线程安全的;当有多个线程操作此数据,则此数据是共享数据,如果不考虑同步机制,会存在线程安全的问题。

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    15天学会jquery
    js常用方法
    js兼容注意事项--仅供参考
    Javascript面向对象特性实现封装、继承、接口详细案例
    关于sql用<>不等于查询数据不对问题
    解决document.onclick在IE下用不了或无效的问题
    解决Button设置disabled后无法执行后台代码问题
    利用Wireshark截取数据包,并对数据包进行解析
    导入本地文本中的数据到MySQL数据库中
    删除数据库中重复项
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/13622726.html
Copyright © 2011-2022 走看看