Java 成员变量和局部变量区别

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

1、定义的位置
    成员变量: 在类体内部,方法体外面
    局部变量: 在方法体内部

2、作用范围
   成员变量的作用范围: 整个类
   局部变量的作用范围: 方法体
   
3、初始化值
   成员变量: 有默认值
   局部变量:  没有默认值 (必须先定义,赋值,最后使用)     

4、内存的位置
   成员变量:位于堆内存
   局部变量:位于栈内存

在Person p1 =new Person()创建对象后,初始化数据如下图:

给属性赋值!并创建第二个对象

详细说明: 

*局部变量必须经过显示初始化之后才能使用,系统不会为局部变量执行初始化。定义了局部变量以后,系统并没有给局部变量进行初始化,直到程序给这个局部变量赋给初值时,系统才会为这个局部变量分配内存空间,并将初始值保存到这块内存中。

*局部变量不属于任何类或者实例,因此它总是保存在方法的栈内存中。如果局部变量是基本数据类型,则该变量直接存储在方法的栈内存中,如果是引用变量则将引用的地址存储在方法的栈内存中。

*栈内存中的变量无需系统垃圾回收,随着方法或者代码块的运行结束而结束。局部变量通常只保存了具体的值或者引用地址,所以所占的内存比较小。

   
5、生命周期
   局部变量:随着方法调用而诞生,随着方法的调用完毕而消失,出栈而消亡.
   成员变量:随着对象创建而诞生,随着对象的消失而消失,GC回收而消亡.  

 

注意事项:

  • 局部变量名称可以和成员变量名称一样,在方法中使用的时候,采用的是就近原则。
  • 基本数据类型变量包括哪些:byte,short,int,long,float,double,boolean,char
  • 引用数据类型变量包括哪些:数组,类,接口,枚举
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值