成员变量和局部变量的概念理解和区别
碍于自己的Java基础战五渣,只能从头开始复习一些基础概念,顺便做一下笔记,shame…
成员变量和局部变量的概念
成员变量的概念:
成员变量就是属于类的变量,在类中,方法体外定义的变量
成员变量又分为两种:
- 类变量(又称静态变量)
- 实例变量(又称非静态变量)
类变量(静态变量)是被static所修饰的成员变量,是属于类的部分,属于类的范畴。
实例变量(非静态变量)是没有被static修饰的成员变量,是属于类的部分,但是属于对象的范畴。
局部变量的概念:
局部变量就是定义在方法体,代码块内的变量,是局部的变量,属于方法的范畴。比如方法的形参,方法内定义的变量等等。
成员变量和局部变量的区别
- 成员变量是独立于方法体外的变量,局部变量是类的方法的变量
- 成员变量包括静态变量和实例变量,局部变量包括形参,方法内变量,代码块(静态,构造,局部)变量,存在方法的参数列表
- 成员变量可以在类中通过this来引用,而局部变量不行
- 成员变量可以被public ,private ,protected,static所修饰,局部变量不行,两者都能被final所修饰
- 成员变量存储在内存的堆区中,局部变量存储在内存的栈区中
- 成员变量不需要显式初始化,会有默认值。局部变量必须经过初始化赋值。(堆和栈内存区的特性)
- 成员变量中,类变量跟随程序生命周期,在类的加载时被加载,只加载一次,实例变量跟随对象的生命周期,每实例一次加载一次。而局部变量的生命周期非常短暂,在方法执行开始加载,方法运行结束后销毁。
- 成员变量的作用域对整个类都是可见的,在一定的条件下,可以被外部访问,局部变量的作用域仅限于定义它的方法,方法的外部是无法访问的。
- 成员变量和局部变量的作用域不同,所以在类中允许同名存在,如果存在同名,局部变量优先级更高,要访问局部变量,直接名字访问,如果要访问成员变量,需要this.引用访问。
在此谢谢参考过的网站和博客的作者!!