浅谈Java中变量.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈Java中变量

浅谈Java中变量   摘要:本文主要讨论了Java中的变量在使用时应注意的四个方面问题以及这些因素对变量影响。同时探讨了这些因素在Java虚拟机中的实现机制和变量在内存中的存储位置。   关键词:变量 成员变量 局部变量 Java虚拟机 变量内存布局 栈 堆 方法区   中图分类号:TP3 文献标识码:A 文章编号:1007-9416(2012)06-0204-02   变量是指数值可以改变的数据。与数学中的变量不同,在计算机程序设计语言中的引入变量实质是对一个或几个存储单元的抽象,这样对存储单元的操作可以转化为对变量的操作。变量在程序中用名字来标识。根据变量在程序中出现的位置和作用的不同,变量会有不同的称呼。   1、Java语言中使用变量时应注意的几个方面   1.1 类型   变量的类型决定了变量的数据性质、范围、可以进行的合法操作以及变量存储在内存中所占的空间(字节数)等。   Java语言有两种类型,基本类型和引用类型。基本类型包括整型(byte、short、int、long)浮点型(float、double)、字符型、布尔型。引用类型包括类、接口、数组等。   各类型数据进行混合运算时按byte、short、char→int→long→float→double从低到高自动转换,但由高到低转换时须强制进行。有继承关系对象间的类型可以转换,子类转换为父类时可自动或强制进行,但父类转化成子类必须强制进行。   1.2 作用域   作用域是指可访问该变量的范围,即一个变量在多大范围内可以使用。Java语言根据变量作用域的不同常分为成员变量和局部变量。   成员变量包括类变量(静态变量)和实例变量,类变量作用域属于整个类,实例变量的作用域属于整个实例。在继承过程中子类新增变量与父类中原有变量同名时,作用域默认为子类,可通过super访问父类。Java语言对成员变量出于封装和安全性的考虑会通过public、protected、默认、private四种方式限制对变量的访问。   局部变量是指在方法中或语句块中声明的变量,局部变量只能在所在的方法或语句块中起作用。方法的形参也是局部变量的一种。当局部变量与成员变量同名时,在局部变量的作用域内成员变量被隐藏,如需使用成员变量必须用this指明。   1.3 值   基本类型数据的值直接存储于变量名所代表的存储空间中。引用数据类型变量所代表的存储空间的值是指针,它指向实例化后的对象,通过new运算实现。   对于对成员变量来讲,类变量属于该类对应的所有实例,它们共享它;而实例变量则属于对应实例。类变量使用时机可通过“类名.变量名”访问,也可通过“对象名.变量名”。但对于实例变量只能通过“对象名.变量名”来访问。Java语言中进行赋值操作或函数调用中传递参数时遵循值传递原则,对基本类型而言传递的值就是真正的信息本身,对引用类型的参数来说传递的是地址(句柄),而非对象的全部信息。   Java变量不但要先声明,还必须被初始化后才可以使用。成员变量在其所属对象创建之际就被系统默认初始化,如果需要的话还可以显示的初始化或通过构造函数对成员变量进行初始化。局部变量则没有默认初始化机制,必须在定义之初即进行初始化。用final声明的成员变量初始化后,不能被重新赋值或修改。   1.4 生存期   一个存储区绑定于一个变量的时间区间成为变量的生存期。方法里的局部变量在方法调用完就销毁,实例变量在类的相应的对象销毁时销毁,类变量随类的结束而结束。   Java中对象的清除是由系统自动完成的,因此实例变量随对象的清除而清除。但如果多个引用变量指向一个对象,这是变量的生存期可能会有变化。   2、Java变量在内存的布局   2.1 Java虚拟机运行时的数据区域   Java虚拟机在运行时会把它管理的内存划分成若干个不同的区域,这些区域都有各自的用处,以及创建和销毁的时间。有的区域随着虚拟机进程的启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁。Java虚拟机运行时包括以下几个数据区域。   (1)程序计数器(program counter register);它是一块较小的内存空间,它的作用是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。每个线程都需要一个独立的程序计数器,保证线程被切换后下次执行时能恢复到正确的执行位置。   (2)栈(stack);与程序计数器一样,栈也是线程私有的,生命周期与线程相同。位于通用RAM中,但通过它的“堆栈指针”可以从处理器哪里获得支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放那些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建线程的时候,JAVA解释器必须知道存储在栈内

文档评论(0)

3471161553 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档