如果对java程序运行时的内存结构不熟悉,请先看一下这里》》
以这个代码示例来讲解:
public class Dog extends Object {
static String tag="Dog";
final int MaxYear=19;
int age;
Person owner;
public Dog(int age,Person owner)
{ this.age=age;
this.owner=owner;
}
public void go(int duration)
{ int time=duration;}
}
Dog dog1=new Dog(1,owner);
实例变量:类里的变量,可以是基础数据类型或类对象类型,它有public、private等访问属性。例子里的age和owner。
局部变量:方法里的变量和方法参数,如例子里的:time,duration。
静态变量:又叫类变量,由类的所有对象共享,如例子里的tag。
final变量:只能赋值一次的变量,或常量。如例子里的MaxYear
基本数据类型变量:即int, short, long, byte, float, double, boolean, char的类型。它们各自都有自己的对象类型,如Integer,Boolean。
对象变量:是指向对象的引用,类似指针或句柄。如例子中的owner。
静态变量和final常量放在方法区:
实例变量,对象,数组主要在堆Heap:
局部变量和参数在执行构造方法和go()方法是存在线程栈的栈帧结构的局部变量表。