java--成员变量与局部变量的区别

成员变量与局部变量的区别

1、变量的分类
  • 成员变量

    • 静态变量
    • 实例变量
  • 局部变量

2、区别

1、声明位置和方式
(1)静态变量:在类中方法外,并且有static修饰
(2)实例变量:在类中方法外,没有static修饰
(3)局部变量:在方法体{}中或方法的形参列表、代码块中

2、在内存中存储的位置不同
(1)静态变量:方法区
(2)实例变量:堆
(3)局部变量:栈

3、生命周期
(1)静态变量:和类的生命周期一样,因为它的值是该类所有对象共享的,早于对象的创建而存在。
(2)实例变量:和对象的生命周期一样,随着对象的创建而存在,随着对象被GC回收而消亡,而且每一个对象的实例变量是独立的。
(3)局部变量:和方法调用的生命周期一样,每一次方法被调用而在存在,随着方法执行的结束而消亡,而且每一次方法调用都是独立。

4、作用域
(1)静态变量和实例变量:不谈作用域
在本类中,唯一的限制,静态方法或静态代码块中不能使用非静态的,其他都可以直接使用。
在其他类中,能不能使用看修饰符(public,protected,private等)
(2)局部变量:有作用域
出了作用域就不能使用

5、修饰符
(1)静态变量:很多
public,protected,private,final,volatile等,一定有的是static
(2)实例变量
public,protected,private,final,volatile,transient等
(3)局部变量
final

public,protected,private:权限修饰符
final:是否是常量,即值是否可以修改
volatile:和多线程有关
transient:是否序列化,和IO有关

6、默认值
(1)静态变量:有默认值
(2)实例变量:有默认值
(3)局部变量:没有,必须初始化
其中的形参比较特殊,靠实参给它初始化。

普通成员变量与局部变量的区别

1.是否含有默认值

​	成员变量有默认值

​	局部变量没有默认值	局部变量要想使用必须显示的初始化

2.存储位置不同

​	成员变量	堆

​	局部变量	栈

3.初始化时间不同

​	局部变量	当方法调用后,才会有值

​	成员变量	对象创建后就会有值

4.销毁时间不同

​	局部变量	当方法执行完毕后  就会弹栈消失

​	成员变量	当没有对象引用内存时  会被垃圾回收站回收

5.作用域不同

​	局部变量	只在当前方法内有效

​			使用时  必须完成初始化

​	成员变量	当前类中所有的实例方法都可以使用

静态变量与成员变量的区别

​ 普通的成员变量 只要创建了对象,就会给每一个变量分配内存

​ 静态变量是可以多个对象共享的

  1. 开辟内存空间时间不同

    ​	普通属性	在创建对象的时候开辟空间
    
    ​	静态属性	在类初始化(类加载)时进行空间开辟		
    
    ​			静态属性开辟空间早于普通属性
    
  2. 调用方式不同

    ​	普通属性	对象名.属性名
    
    ​	静态属性	类名.属性名(推荐)
    
    ​			对象名.属性名
    
  3. 在内存中的位置不同

    ​	普通属性	堆内存
    
    ​	静态属性	方法区
    
  4. 在内存中的份数不同

    ​	普通属性	每个对象一份
    
    ​	静态属性	所有对象共享一份
    
  5. 销毁时间不同

    ​	普通属性	当没有对象引用时  会被垃圾回收器回收
    
    ​	静态属性	生命周期和类保持一致
    
  6. 都有默认值

int	0byte	o
	
	   ​	short	0long	0L;float	0.0F;double	0.0;char	'\u0000'
	
	   ​	String	null
	
	   ​	Person	null
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值