在实体类中只有属性和方法
区别一:定义的位置
首先在定义类中的变量是成员变量
定义方法种的是局部变量
区别二:在内存中的位置不同
成员变量存储在堆内存的对象中
局部变量存储在栈内存的方法中
区别三:生命周期不同(什么时候创建,什么时候销毁!)
成员变量随着对象的出现而出现在堆中,随着对象的消失而从堆中消失(gc垃圾回收机制)
局部变量随着方法的运行而出现在栈中,随着方法的弹栈而消失
区别四:初始化不同
成员变量因为在堆内存中,所有默认的初始化值
局部变量没有默认的初始化值,必须手动的给其赋值才可以使用。
例子:
局部变量:存在某个方法中的变量就叫局部变量,局部变量一旦声明就必须赋值 否则不能使用
class Person { String name; char sex; int age; public void eat(){ int num = 10;//不进行赋值是在方法体内不能用的 编译的时候就会报错 尚未初始化变量 System.out.println(num+"吃"); } public void sleep(){ System.out.println("睡觉"); } }
成员变量
存在某个类中的并且类方法外就叫成员变量。成员变量可以在类中的任何地方访问
局部变量和成员变量的名字可以重名 采用就近原则
class Person { String name; char sex; int age; public void eat(){ int num = 10;//不进行赋值是在方法体内不能用的 System.out.println(num+"吃");//如果这个地方使用时跟成员变量重名时 使用就近原则 此时num的值是10 } public void sleep(){ System.out.println("睡觉"); } }