如果對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()方法是存在線程棧的棧幀結構的局部變量表。