Java中的成员变量和局部变量有以下区别:
作用域不同:成员变量在整个类中都可见,而局部变量只在声明它的代码块内可见。
生命周期不同:成员变量的生命周期与对象的生命周期相同,当对象被创建时,成员变量也被创建,并在对象被销毁时销毁。而局部变量的生命周期只在其所在的代码块内有效,当代码块执行完毕后,局部变量将被销毁。
默认值不同:成员变量有默认值,如果没有显式地赋值,它们会被初始化为其对应类型的默认值(例如,整型变量默认为0,布尔变量默认为false)。而局部变量没有默认值,必须在使用之前显式地赋值。
访问修饰符不同:成员变量可以使用不同的访问修饰符(public、private、protected)来控制对其的访问权限。而局部变量不能使用访问修饰符,它们只在声明它们的代码块内可见。
存储位置不同:成员变量存储在堆内存中的对象中,而局部变量存储在栈内存中。
总的来说,成员变量是属于对象的,而局部变量是属于方法或代码块的。成员变量具有更长的生命周期和更广的作用域,而局部变量的生命周期和作用域更短。