Java语言有一个优点就是它相对其他编程语言(例如C语言)摒弃了指针的数据类型,但是否真的摒弃了还得仔细研究一下java的内部机制。
Java中的堆栈
Java堆栈都在Ram中,与其他一些语言不同的是这些堆栈一部分是由Java中的JVM通过算法自动管理,方便了许多。
- 栈
Java中当一个方法执行时,会建立相应的内存栈(栈是一段连续的内存空间),里面存放的是方法中的基本类型的变量数据和对象的引用变量
- 堆
当Java执行new语句时会建立相应堆内存(堆是一片随机的内存空间),里面存放new出来的对象
Java中的"指针"就是这两个内存区域通过变量映射出的对应关系。
之前说开辟栈内存中,里面存放的数据类型有基本类型的变量数据和对象的引用变量,这个引用变量就是"指针"
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();
}
}
上述代码的内存分配为
testObj就是Java中的“指针”,它指向堆内存中一块为TestObject对象随机分配的一片内存空间的地址,从而达到一种引用效果,这就是Java中的引用类型。