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

成员变量:写在类声明的大括号里面的变量。

 

    如果在变量有static关键字修饰,就叫作静态变量或类变量;

    如果该变量没有static关键字修饰,就叫作非静态变量或实例变量;

class A {
		int a ;
	}

局部变量:方法内定义的变量、形参、代码块中定义的变量.

                  局部变量除形参之外,都必须显示初始化,就是必须先给方法局部变量和代码块局部变量指定初始值,否则不可以访问它们。

public void test(int a){
		a = 1;
	}

两者的区别

一、初始值不同:

    成员变量声明了就可以使用,有默认值;局部变量必须经过声明和赋值操作才能使用,并且没有默认值。

成员变量的默认值:

 

int类型的默认值是0

    String类型的默认值是null

    double类型的默认值是0.0d

    Integer类型的默认值是null

    Long类型的默认值是null

    long类型的默认值是0L

    float类型的默认值是0.0f

    char类型的默认值是\u0000

    byte类型的默认值是(byte)0

    short类型的默认值是(short)0

 

二、存储位置不同:

 

    成员变量分配到堆中,成员变量的作用于在整个内部都是可见的,所有成员方法都可以使用它。如果访问权限允许,还可以在类的外部使用成员变量。

    局部变量分配到栈中,局部变量的作用于仅限于定义它的方法,在该方法的外部无法访问。

三、生命周期不同:

    成员变量随着对象的存在而存在,随着对象的销毁而销毁;局部变量随着方法的存在而存在调用,销毁而销毁;局部变量只能在声明它的方法中使用,而成员变量在整个类中都可以使用。

四、优先级:

    成员变量和局部变量同名时,局部变量的赋值具有更高的优先级,优先取局部变量的值。

五、可否同名:

    在同一个方法中,可以有同名的局部变量;

    在不同的方法中,可以有同名的局部变量。

六、修饰符:

    成员变量可以被public,protect,private,static等修饰符修饰;

    局部变量不能被控制修饰符及static修饰;

    两者都可以定义成final型。

小结:

     同一个类里,成员变量的作用范围是整个类内,一个类里不能定义两个同名的成员变量,即使一个是类变量,一个是实例变量也不行;一个方法里不能定义两个同名的方法局部变量,方法局部变量与形参也不能同名;同一个方法中不同代码块内的代码块局部变量可以同名;如果先定义代码块局部变量,后定义方法局部变量,前面定义的代码块局部变量与后面定义的方法局部变量也可以同名。

     java允许局部变量和成员变量同名,如果方法里的成员变量和局部变量同名,局部变量会覆盖成员变量,如果需要在这个方法里引用被覆盖的成员变量,则可以使用this(对于实例变量)或类名(对于类变量)作为调用者来限定访问成员变量。      

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值