zoukankan      html  css  js  c++  java
  • Java中类变量和实例变量的初始化

    1. 类变量和实例变量

    类变量即类成员变量中的静态变量,它们可以通过类名来直接访问。

    实例变量是类成员变量中的非静态变量,只有在实例化对象之后通过对象来访问。

    2. 空间分配的时间不同

    类变量是在类加载后的准备阶段在方法区分配内存的。

    实例变量是在类实例化为对象的时候在堆中分配内存。

    3. 初始化

    类变量在准备阶段会进行默认初始化,当某些条件满足时候会触发类的初始化。详见《深入理解java虚拟机》的类加载机制。

    实例变量在空间分配内存后,虚拟机会将所分配到的内存空间都初始化为零值(不包括对象头)。这一步操作保证了对象的实例字段在java代码中可以不赋初值就可以直接访问,程序能访问到这些字段的数据类型所对应的零值。

    对于局部变量,只能显示地进行初始化,否则不能访问该变量的值。

    4. final关键字

    当final关键字作用于类变量时,必须有显示的初始化。在声名对象的语句中初始化,或者在静态代码块中进行初始化。

    当final关键字作用于实例变量时,也必须进行显示的初始化。在声名对象的语句中初始化,或者在构造代码块中进行初始化,或者在所有的构造函数中进行初始化。

    final修饰的变量只能初始化化一次,因此该变量已经在一种方式中进行过初始化,则不能在另一种方式再进行一次初始化。

  • 相关阅读:
    Fiddler界面详解
    Windows平台下Java,tomcat安装与环境配置
    为什么要装Tomcat?
    实例五租房子
    实例四投票
    易犯的PHP小错误及相应分析
    MYSQL数据库错误代码提示汇总
    php mysql_insert_id()
    实例三搜索
    实例二增删改查
  • 原文地址:https://www.cnblogs.com/liujinhong/p/6434141.html
Copyright © 2011-2022 走看看