局部变量和成员变量的对比:
/*
1:
局部变量没有默认值
成员变量有默认值
2:
局部变量是当其所在的函数被调用时在栈中开辟内存
成员变量是当对象创建时在堆中开辟内存
3:
局部变量是当其作用域结束了就释放在栈中的内存
成员变量是当其所属的对象被垃圾回收时才释放内存
4:
局部变量的作用域是从其定义的位置开始,到其所在的大括号结束
成员变量的作用域是整个类
*/
class Car
{
String color;
int num;
public void run()
{
System.out.println(color+","+num);
}
}
class Demo5
{
public static void main(String[] args)
{
//int a;
//System.out.println(a);//可能尚未初始化变量a
Car che = new Car();
System.out.println(che.color+","+che.num);//null,0
}
}
main()和show()所在的是栈,具体的对象是在堆中的。
对于对象来说,总有一个this指针指向当前正在利用的对象。