1.声明位置上的区别:
(1)成员变量是定义在类内方法外的,成员变量在整个类内都有效。(注意:属性一定是有修饰符的)
语法:修饰符 数据类型 变量名;
(2)局部变量是定义在方法之内的,局部变量只在其声明的方法内有效。
(注意:局部变量是没有访问控制修饰符的,因为局部变量本身就是一个访问权限的设定,只能在局部调用,也就是说局部变量的生命周期在方法体内部只能在方法体内部访问,方法外界是没办法访问这个变量的,所以不需要任何修饰符修饰,但可以使用final)
语法:数据类型 变量名;
2.作用上的区别:
(1)成员变量的作用是用于描述一类事物的公共属性的。
(2)局部变量的作用就是提供一个变量给方法内部使用而已。
3.生命周期的区别:
(1)成员变量随着对象的创建而创建,随着对象的消失而消失(随着对象被垃圾回收而销毁)。
(2)局部变量在调用了对应的方法并执行到了创建该变量的语句时存在,局部变量一旦出了自己的作用域那么马上从内存中消失。
4.初始值的区别:
(1)成员变量是有默认的初始值的(声明完以后,即使没有赋值也可以直接用)。
① int: 0
②float: 0.0f
③double: 0.0
④boolean:false
⑤char: “ ”(空字符)
⑥String(引用数据类型/类类型):null
(2)局部变量是没有默认的初始值的,必须要先初始化才能使用。
(注意:如果没有初始化也没有使用,那么是不会报错的,一旦使用,立马报错)
5.存储位置上的区别:
(1)成员变量属于对象,它存储在堆内存中,是堆内存中的实体,当没有引用指向它时,才会被垃圾回收器回收。
(2)局部变量存储在栈内存中,当不再使用时,马上就会被释放。