Java語言有一個優(yōu)點就是它相對其他編程語言(例如C語言)摒棄了指針的數(shù)據(jù)類型淘讥,但是否真的摒棄了還得仔細研究一下java的內(nèi)部機制老厌。
Java中的堆棧
Java堆棧都在Ram中边翼,與其他一些語言不同的是這些堆棧一部分是由Java中的JVM通過算法自動管理腮敌,方便了許多。
- 棧
Java中當一個方法執(zhí)行時石咬,會建立相應的內(nèi)存棧(棧是一段連續(xù)的內(nèi)存空間),里面存放的是方法中的基本類型的變量數(shù)據(jù)和對象的引用變量
- 堆
當Java執(zhí)行new語句時會建立相應堆內(nèi)存(堆是一片隨機的內(nèi)存空間)卖哎,里面存放new出來的對象
Java中的"指針"就是這兩個內(nèi)存區(qū)域通過變量映射出的對應關系鬼悠。
之前說開辟棧內(nèi)存中,里面存放的數(shù)據(jù)類型有基本類型的變量數(shù)據(jù)和對象的引用變量亏娜,這個引用變量就是"指針"
public class TestObject{
public TestObject(){
System.out.println("Hello World!");
}
}
public class Test{
public static void main(String[] arge){
int a=10;
TestObject testObj = new TestObject();
}
}
上述代碼的內(nèi)存分配為
testObj就是Java中的“指針”焕窝,它指向堆內(nèi)存中一塊為TestObject對象隨機分配的一片內(nèi)存空間的地址,從而達到一種引用效果维贺,這就是Java中的引用類型它掂。