Java—成员变量和局部变量
Java—成员变量和局部变量,成员变量:在类范围里定义的变量。成员变量又分为实例属性(不用static修饰)和类属性(用static修饰)。类属性和实例属性统称为成员变量。
类属性在类的准备阶段开始存在,直到系统销毁这个类,类属性与类的生存范围相同。实例属性从类的实例被创建开始存在,直到系统销毁这个实例,实例属性与对应实例生存范围相同。
成员变量无须显式初始化,只要定义了类属性和实例属性,则系统会在这个类的准备阶段或创建类的实例时进行默认初始化。实例也可访问类属性,同一个类的多个实例访问类属性时,实际上访问的是同一个类属性,访问的都是该类的属性。
局部变量:在方法内定义的变量。局部变量分为形参(方法签名中定义的变量)、方法局部变量(在方法内定义的变量)和代码块局部变量(在代码块中定义的变量)。
形参作用域在整个方法内有效。方法局部变量在方法体内的定义的地方开始有效,到方法结束时失效。代码块局部变量,从定义该变量的地方生效,到该代码块结束时失效。
局部变量除形参外,都必须显式初始化(指定初始值)之后才能访问,否则将出错。(形参的初始化在调用该方法时由系统完成)
不能无限制的定义成员变量。当定义一个成员变量是,成员变量将被放置到堆内存中去,成员变量的范围将扩大到类存在范围或者对象存在范围,这种范围的扩大有两个害处:
1、增大了变量的生存时间,将导致更大的系统开销;
2、扩大了变量的作用域,不利于提高程序的内聚性。
以下情形,应该考虑使用成员变量:
1、需要定义的变量用于描述某个类或某个对象的固有信息,这种变量应定义为成员变量。如果这种信息对这个类的所有实例完全相同,或者说它是类相关的即类的属性性质变,该类的所有实例的性质也同样改变,这种类相关的信息应该定义为类属性(static修饰);如果这种信息是实例相关的,即不同的实例,实例的信息可能不同,这种实例相关的信息应该定义成实例属性(不用static修饰)。
2、在类中,需要定义一个变量来保存该类或者实例运行时的状态信息,这种用于保存某个类,或者某个实例状态信息的变量通常应该定义为成员变量。
3、如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该用成员变量来保存。
即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能越好。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Oracle数据库的几种设计规范
一般情况下,可以从两个方面来判断数据库是否设计的比较规范,1是看是否拥有大量的窄表,2是宽表的数量是否足够的少,如果符合这两个条件,则可以说明这个数据库的设计水平还是比较高的,当然这是两个表面上的指标,为了达到数据库设计规范的要求,一般来说,需要符合以下几个要求。 表中要避免可为空的列。虽然表中允许有空列,但是,空字段是一种比较特殊的数据类型,数据库在处理的时候 需要进行特殊的处理,这样的话,就会增加数据库处理记录的复杂性,当表中要比较多的空字段时,在同等条件下,数据库处理的性能会降低许多,所以,虽然在数据库表的设计的时候,允许表中具有空字段,但是,我们应该尽量避免,若的确需要的话,可以通过一些折中的方式,来处理这些空字段,让他对数据库性的影响降到最低。 通过设置默认值的形式,来避免空字段的产生,如一个商城VIP系统,有的时候身份证号
-
下一篇
如果你还访问不了码云 Gitee ,请更换一下 DNS 服务器
今天下午码云 Gitee.com 的域名已经恢复解析了,由于 DNS 解析更新存在延迟,每个地方的 DNS 有自己的缓存策略,目前 DNS 已经在大部分恢复了,还有个别地区还没有恢复。 如果你所在的地方还无法 ping 到 gitee.com 的 IP 地址,或者ping 到的地址是 127.0.0.1 ,请将本机的 DNS 服务器更改为 223.5.5.5 或者 114.114.114.114 应该能最快恢复。 或者请看热门动弹里置顶的应急信息。
相关文章
文章评论
共有0条评论来说两句吧...