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

    1. 类变量和实例变量

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

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

    2. 空间分配的时间不同

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

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

    3. 初始化

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

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

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

    4. final关键字

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

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

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

  • 相关阅读:
    day06.2-软链接与硬链接
    day06.1-磁盘管理
    day05.3-Linux进程管理
    day05.2-Vim编辑器
    day05.1-文件归档与压缩
    day04-Linux系统中用户控制及文件权限管理方法
    day03-Linux操作系统目录结构
    day02.2-常用Linux命令整理
    BST_traverse(中序遍历,前序遍历,后序遍历)
    JS_DOM_practice with Pokemon
  • 原文地址:https://www.cnblogs.com/liujinhong/p/6434141.html
Copyright © 2011-2022 走看看