更新时间:2018-07-25 来源:黑马程序员JavaEE培训学院 浏览量:
成员变量:在类范围里定义的变量。成员变量又分为实例属性(不用static修饰)和类属性(用static修饰)。类属性和实例属性统称为成员变量。
类属性在类的准备阶段开始存在,直到系统销毁这个类,类属性与类的生存范围相同。实例属性从类的实例被创建开始存在,直到系统销毁这个实例,实例属性与对应实例生存范围相同。
成员变量无须显式初始化,只要定义了类属性和实例属性,则系统会在这个类的准备阶段或创建类的实例时进行默认初始化。实例也可访问类属性,同一个类的多个实例访问类属性时,实际上访问的是同一个类属性,访问的都是该类的属性。
局部变量:在方法内定义的变量。局部变量分为形参(方法签名中定义的变量)、方法局部变量(在方法内定义的变量)和代码块局部变量(在代码块中定义的变量)。
形参作用域在整个方法内有效。方法局部变量在方法体内的定义的地方开始有效,到方法结束时失效。代码块局部变量,从定义该变量的地方生效,到该代码块结束时失效。
局部变量除形参外,都必须显式初始化(指定初始值)之后才能访问,否则将出错。(形参的初始化在调用该方法时由系统完成)
不能无限制的定义成员变量。当定义一个成员变量是,成员变量将被放置到堆内存中去,成员变量的范围将扩大到类存在范围或者对象存在范围,这种范围的扩大有两个害处:
1、增大了变量的生存时间,将导致更大的系统开销;
2、扩大了变量的作用域,不利于提高程序的内聚性。
以下情形,应该考虑使用成员变量:
1、需要定义的变量用于描述某个类或某个对象的固有信息,这种变量应定义为成员变量。如果这种信息对这个类的所有实例完全相同,或者说它是类相关的即类的属性性质变,该类的所有实例的性质也同样改变,这种类相关的信息应该定义为类属性(static修饰);如果这种信息是实例相关的,即不同的实例,实例的信息可能不同,这种实例相关的信息应该定义成实例属性(不用static修饰)。
2、在类中,需要定义一个变量来保存该类或者实例运行时的状态信息,这种用于保存某个类,或者某个实例状态信息的变量通常应该定义为成员变量。
3、如果某个信息需要在某个类的多个方法之间进行共享,则这个信息应该用成员变量来保存。
即使在程序中使用局部变量,也应该尽可能地缩小局部变量的作用范围,局部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能越好。
本文版权归黑马程序员JavaEE学院所有,欢迎转载,转载请注明作者出处。谢谢!
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19