1,区别
2.内存位置不同
如图,主方法里的变量stu1和stu2在栈内存,new开辟空间后,name变量在堆内存
.
3.生命周期不同
1.随着对象的消失而消失
https://kdocs.cn/l/cuQvFYJirzaR?linkname=150996495
主方法进栈,遇到method,method进栈,有new进堆,name成员变量进入空间
随着method方法走完,method弹栈,意味着stu对象消失,程序里没有任何代码可以找到name的地址,此时name的空间就被称为内存中的垃圾
java里有垃圾回收器,会帮我们定期清理垃圾,成员变量也就随之消失
4.作用域
变量的使用范围
如图,在study里定义的a,不能在method中使用,因为a的作用域在study中
如图,类里的成员变量name既可以在study中使用,也可以在method中使用,可见类变量的作用域是整个类中
但我们不用记得那么麻烦,我们只需要记住,变量的作用域是自己所归属的大括号中(a出了study大括号不能使用,name在类的大括号可以任意使用)