A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐慧书 中级黑马   /  2012-5-4 21:26  /  1762 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我们声明一个对象如: Object o = null;
这是声明,那么会在Stack中分配一个地址用来存储实例后某个对象的引用地址。
那么 ,问题:如何获得o在Stack中的地址呢?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

5 个回复

倒序浏览
首先null是空的意思 什么都没有 Object o=null 你只是在栈中声明了一个变量o没有指向任何堆内存中的对象
回复 使用道具 举报
本帖最后由 It's_Zero 于 2012-5-9 16:15 编辑

Object o = null; 只是在栈内存中创建了一个 o 的名字  而没有通过new 向堆内存中创建  对象,
所以 o  的指向地址是null
  1. public class Day3Demo3 {       
  2.         public static void main(String[] args){
  3.                 Day3Demo3 day3Demo3 = new Day3Demo3();
  4.                 System.out.println(day3Demo3);//有内存地址输出
  5.                 Day3Demo3 day3Demo = null;
  6.                 System.out.println(day3Demo);//输出null
  7.         }
  8. }
复制代码
回复 使用道具 举报
本帖最后由 It's_Zero 于 2012-5-9 16:13 编辑

Object o = null; 只是在栈内存中创建了一个 o 的名字  而没有通过new 向堆内存中创建  对象,
所以 o  的指向地址是null
  1. public class Day3Demo3 {
  2.    
  3.         public static void main(String[] args){
  4.                 Day3Demo3 day3Demo3 = new Day3Demo3();
  5.                 System.out.println(day3Demo3);//输出Day3Demo3@de6ced有内存地址
  6.                 Day3Demo3 day3Demo = null;
  7.                 System.out.println(day3Demo);//输出null
  8.         }
  9. }
复制代码
回复 使用道具 举报
问题:如何获得o在Stack中的地址呢?
楼主是问1:o在Stack中的自己的地址,还是2:o在Stack中的引用的地址。
1 是jvm分配的,只有变量自己知道。(不知道)
2 引用地址要传给引用变量, 当使用tostring()打印引用变量时
getClass().getName() + '@' + Integer.toHexString(hashCode())
hashCode你可以简单理解为内存地址 但不是绝对物理地址(它是根据内存地址算出的)
小弟只知道这点,不知道对你有没有帮助
回复 使用道具 举报
楼主以前是学C的?想玩指针了?哈哈
JAVA怎么获取内存地址我还真没搞出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马