【Java杂烩】成员变量和局部变量的概念理解和区别

成员变量和局部变量的概念理解和区别


碍于自己的Java基础战五渣,只能从头开始复习一些基础概念,顺便做一下笔记,shame…


成员变量和局部变量的概念

成员变量的概念:
成员变量就是属于类的变量,在类中,方法体外定义的变量

成员变量又分为两种:

  • 类变量(又称静态变量)
  • 实例变量(又称非静态变量)

类变量(静态变量)是被static所修饰的成员变量,是属于类的部分,属于类的范畴。
实例变量(非静态变量)是没有被static修饰的成员变量,是属于类的部分,但是属于对象的范畴。

局部变量的概念:
局部变量就是定义在方法体,代码块内的变量,是局部的变量,属于方法的范畴。比如方法的形参,方法内定义的变量等等。


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

  • 成员变量是独立于方法体外的变量,局部变量是类的方法的变量
  • 成员变量包括静态变量和实例变量,局部变量包括形参,方法内变量,代码块(静态,构造,局部)变量,存在方法的参数列表
  • 成员变量可以在类中通过this来引用,而局部变量不行
  • 成员变量可以被public ,private ,protected,static所修饰,局部变量不行,两者都能被final所修饰
  • 成员变量存储在内存的堆区中,局部变量存储在内存的栈区中
  • 成员变量不需要显式初始化,会有默认值。局部变量必须经过初始化赋值。(堆和栈内存区的特性)
  • 成员变量中,类变量跟随程序生命周期,在类的加载时被加载,只加载一次,实例变量跟随对象的生命周期,每实例一次加载一次。而局部变量的生命周期非常短暂,在方法执行开始加载,方法运行结束后销毁。
  • 成员变量的作用域对整个类都是可见的,在一定的条件下,可以被外部访问,局部变量的作用域仅限于定义它的方法,方法的外部是无法访问的。
  • 成员变量和局部变量的作用域不同,所以在类中允许同名存在,如果存在同名,局部变量优先级更高,要访问局部变量,直接名字访问,如果要访问成员变量,需要this.引用访问。

在此谢谢参考过的网站和博客的作者!!

你可能感兴趣的:(Java杂烩)