Java—成员变量和局部变量
Java—成员变量和局部变量,成员变量:在类范围里定义的变量。成员变量又分为实例属性(不用static修饰)和类属性(用static修饰)。类属性和实例属性统称为成员变量。
类属性在类的准备阶段开始存在,直到系统销毁这个类,类属性与类的生存范围相同。实例属性从类的实例被创建开始存在,直到系统销毁这个实例,实例属性与对应实例生存范围相同。
成员变量无须显式初始化,只要定义了类属性和实例属性,则系统会在这个类的准备阶段或创建类的实例时进行默认初始化。实例也可访问类属性,同一个类的多个实例访问类属性时,实际上访问的是同一个类属性,访问的都是该类的属性。
局部变量:在方法内定义的变量。局部变量分为形参(方法签名中定义的变量)、方法局部变量(在方法内定义的变量)和代码块局部变量(在代码块中定义的变量)。
形参作用域在整个方法内有效。方法局部变量在方法体内的定义的地方开始有效,到方法结束时失效。代码块局部变量,从定义该变量的地方生效,到该代码块结束时失效。
局部变量除形参外,都必须显式初始化(指定初始值)之后才能访问,否则将出错。(形参的初始化在调用该方法时由系统完成)
不能无限制的定义成员变量。当定义一个成员变量是,成员变量将被放置到堆内存中去,成员变量的范围将扩大到类存在范围或者对象存在范围,这种范围的扩大有两个害处:
1、增大了变量的生存时间,将导致更大的系统开销;
2、扩大了变量的作用域,不利于提高程序的内聚性。
以下情形,应该考虑使用成员变量:
1、需要定义的变量用于描述某个类或某个对象的固有信息,这种变量应定义为成员变量。如果这种信息对这个类的所有实例完全相同,或者说它是类相关的即类的属性性质变,该类的所有实例的性质也同样改变,这种类相关的信息应该定义为类属性(static修饰);如果这种信息是实例相关的,即不同的实例,实例的信息可能不同,这种实例相关的信息应该定义成实例属性(不用static修饰)。
2、在类中,需要定义一个变量来保存该类或者实例运行时的状态信息,这种用于保存某个类,或者某个实例状态信息的变量通常应该定义为成员变量。
3、如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该用成员变量来保存。
即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能越好。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Oracle数据库的几种设计规范
一般情况下,可以从两个方面来判断数据库是否设计的比较规范,1是看是否拥有大量的窄表,2是宽表的数量是否足够的少,如果符合这两个条件,则可以说明这个数据库的设计水平还是比较高的,当然这是两个表面上的指标,为了达到数据库设计规范的要求,一般来说,需要符合以下几个要求。 表中要避免可为空的列。虽然表中允许有空列,但是,空字段是一种比较特殊的数据类型,数据库在处理的时候 需要进行特殊的处理,这样的话,就会增加数据库处理记录的复杂性,当表中要比较多的空字段时,在同等条件下,数据库处理的性能会降低许多,所以,虽然在数据库表的设计的时候,允许表中具有空字段,但是,我们应该尽量避免,若的确需要的话,可以通过一些折中的方式,来处理这些空字段,让他对数据库性的影响降到最低。 通过设置默认值的形式,来避免空字段的产生,如一个商城VIP系统,有的时候身份证号
- 下一篇
一元建站-基于函数计算+wordpress构建 serverless 网站
前言 本文旨在通过 快速部署一个 wordpress 网站到阿里云函数计算平台 这个示例来展示 serverless web 新的开发模式, 包括 FUN 工具一键初始化 NAS, 同步网站到 NAS, 一键部署等能力, 展现函数计算的开发敏捷特性、自动弹性伸缩能力、免运维和完善的监控设施。 相关参考文档: https://yq.aliyun.com/articles/640912 1.1 DEMO 概述 DEMO 示例效果入口: http://hz.mofangdegisn.cn 账号: fc-test-user 密码: fc-test-pwd DEMO 示例工程地址: fc-wordpress 1.2 解决方案 如上图所示, 当多个用户通过对外提供的 url 访问web服务的时候时候,每秒的请求几百上千都没有关系, 函数计算平台会自动伸缩, 提
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7设置SWAP分区,小内存服务器的救世主
- Red5直播服务器,属于Java语言的直播服务器
- Docker快速安装Oracle11G,搭建oracle11g学习环境