变量引用的是栈内存的地址,对象的实际值是通过栈内存中存储的堆内存地址从堆内存中获得的。。。
堆内存是存放对象的地方,栈内存则指向堆内存,因为栈内存的查找时间比堆内存快很多(它只存储堆内存的地址),因此变量指向的是栈内存,获取对象实际的值时,java通过栈内存获得对内存的值
所以
栈内存存储的是堆内存中的实际值的地址
所以打印的是 栈内存中的地址
j ava数据(包括原始类型(primitive type)和对象(ojbect))在内存中的存储这个角度,用一个自创的“术语”来阐述我对这个问题的理解。这个术语就是:“堆栈区数据复制(Stack Data Copy,简称SDC)”。详细一点就是:在Java中,不管是赋值操作还是参数传递操作--针对原始类型(primitive type),是对堆栈区的原始类型的值进行复制;针对对象,是对储存在堆栈区的,对象的引用中所储存的对象的值的地址进行复制。
待续。。。。。。。。。。