黑马程序员技术交流社区
标题:
关于对象的Stack地址问题
[打印本页]
作者:
徐慧书
时间:
2012-5-4 21:26
标题:
关于对象的Stack地址问题
我们声明一个对象如: Object o = null;
这是声明,那么会在Stack中分配一个地址用来存储实例后某个对象的引用地址。
那么 ,问题:如何获得o在Stack中的地址呢?
作者:
李啸
时间:
2012-5-9 13:19
首先null是空的意思 什么都没有 Object o=null 你只是在栈中声明了一个变量o没有指向任何堆内存中的对象
作者:
It's_Zero
时间:
2012-5-9 16:10
本帖最后由 It's_Zero 于 2012-5-9 16:15 编辑
Object o = null; 只是在栈内存中创建了一个 o 的名字 而没有通过new 向堆内存中创建 对象,
所以 o 的指向地址是null
public class Day3Demo3 {
public static void main(String[] args){
Day3Demo3 day3Demo3 = new Day3Demo3();
System.out.println(day3Demo3);//有内存地址输出
Day3Demo3 day3Demo = null;
System.out.println(day3Demo);//输出null
}
}
复制代码
作者:
It's_Zero
时间:
2012-5-9 16:10
本帖最后由 It's_Zero 于 2012-5-9 16:13 编辑
Object o = null; 只是在栈内存中创建了一个 o 的名字 而没有通过new 向堆内存中创建 对象,
所以 o 的指向地址是null
public class Day3Demo3 {
public static void main(String[] args){
Day3Demo3 day3Demo3 = new Day3Demo3();
System.out.println(day3Demo3);//输出Day3Demo3@de6ced有内存地址
Day3Demo3 day3Demo = null;
System.out.println(day3Demo);//输出null
}
}
复制代码
作者:
黑马张立国
时间:
2012-5-9 17:31
问题:如何获得o在Stack中的地址呢?
楼主是问1:o在Stack中的自己的地址,还是2:o在Stack中的引用的地址。
1 是jvm分配的,只有变量自己知道。(不知道)
2 引用地址要传给引用变量, 当使用tostring()打印引用变量时
getClass().getName() + '@' + Integer.toHexString(hashCode())
hashCode你可以简单理解为内存地址 但不是绝对物理地址(它是根据内存地址算出的)
小弟只知道这点,不知道对你有没有帮助
作者:
蒋映辉
时间:
2012-5-9 17:40
楼主以前是学C的?想玩指针了?哈哈
JAVA怎么获取内存地址我还真没搞出来
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2