分享

java虚拟机规范第二章2.5

 琅琊客 2011-03-22
  2.5 变量
  变量(variable)是一种存储位置。它有一个相应的类型,有时称为它的编译期类型(compile-time-type)。这种类型或者是基本类型($2.4.1),或者是引用类型($2.4.5)。变量总是包含一个与它的类型赋值相容($2.6.6)的值。基本类型的变量总是持有那个确定的基本类型的值。引用类型的变量可以持有一个null引用或者一个与该变量的类型赋值相容的($2.6.6)类的任何对象的引用。

  变量的类型与它的值的相容性通过JAVA语言设计来保证,因为缺省的值($2.5.1)是相容的,并且所有对变量的赋值,为了赋值相容性,都在编译期被检查。

  有七种变量:

  (1)类变量(class variable)是在类声明中用关键字static($2.9.1),或者在接口声明中用(或不用)关键字static声明的类类型的域。类变量在类或者接口被装载($2.16.2)时被创建,并且在创建时按照缺省值被初始化。在类的任何必需的终止函数($2.16.8)结束后、类或者接口被卸载($2.16.8)时,类变量有效的终止存在。

  (2)实例变量(instance variable)是类声明中不使用关键字static($2.9.1)声明的域。如果类T具有实例变量a,则对类T或者它的任何子类的每个新创建的对象,都创建并按照缺省值初始化一个新的实例变量a作为每个新创建的对象的一部分。对对象不再被引用,在该对象的任何必需的终止函数结束之后,该对象的域实例变量有效地终止存在。

  (3)数组成分(array components)是在一个数组新对象被创建时创建的、并且初始化为缺省值($2.5.1)的未命名变量。数组成分在数组不再被引用时有效的终止存在。

  (4)方法参数(method parameters)指定传递给方法的参数值。对在方法声明中声明的每个参数。每次方法被调用时都创建一个新的参数变量。新的变量用来自方法调用的相应参数值初始化。在方法主体执行结束时方法参数有效地终止存在。

  (5)构造函数参数(construstor parameters)指定传递给构造函数的参数值。对在构造函数声明中声明的每个参数,每次类实例创建表达式或者显式的构造函数调用被求值时,都创建一个新的参数变量。新的变量用来自创建表达式或者构造函数调用的相应参数初始化。当构造函数主体执行结束时,构造函数参数有效的终止存在。

  (6)异常处理者参数(exception-handle parameter)变量在每次异常被try语句($2.15.2)的catch子句($2.15.2)相应的块执行结束时,异常处理者参数有效的终止存在。

  (7)局部变量(local variables)由局部变量声明语句声明。每当控制流进入一个块或者for语句中时,就为在直接包含在该块或者for语句中的局部变量声明语句中的声明的每个局部变量创建一个新的变量。但是,局部变量直到声明它的局部变量声明语句被执行时才初始化。当该块或者for语句执行结束时,局部变量有效地终止存在。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多