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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 江远云 中级黑马   /  2012-3-14 12:29  /  1717 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自己想的话引用是相当于快捷方式一样,内存地址值存放在堆内存中,用变量c引用,那那就是把内存地址值的快捷方式赋给了c,c只要按这个快捷方式的路径去找就能找的到,使用c是的对象就要用到内存里的内容,这时,访问的是通过x变量找到堆内存里的内存地址值还是变量x里的快捷内存地址值?

4 个回复

倒序浏览
java是工具性语言,对底层的关注远没有你想的那么多...
回复 使用道具 举报
有点搞不明白呃。前面还是c呢,后面怎么变成了x呢,而且没了c的事了。。。
快捷方式的理解也没错,类似。在堆内存当中,只要开辟一块空间这块空间就会有自己 的地址值,而不是地址值存在于堆内存中,这样不太确切。它只能说是堆内存空间的一个属性。
老师说过存在于堆内存中的都是对象,地址值可不是对象哦!
用变量c引用,那那就是把内存地址值的快捷方式赋给了c:不是把内存地址值的快捷方式给了c而是变量c的值指向堆内存中相应的地址值,比如说int[] a={1,2,3};System.out.println(a);打印的是变量a的值即数组{1,2,3}的地址值,
访问的是通过x变量找到堆内存里的内存地址值还是变量x里的快捷内存地址值?:当然是通过x变量记录的地址值找到了对象,不明白你说的什么快捷内存地址值.....
回复 使用道具 举报
首先肯定的说是通过x 变量找到堆内存的内存地址包着的具体对象
而本身x对象变量是放在栈内存中的 他本身没有存放任何东西的能力 他只是指向堆内存。。。
回复 使用道具 举报
String C = new String ("abcdefg");
1、在栈内存建立String类的引用 C
2、在堆内存建立对象,并产生一个在内存中空间占用的起始地址:0x12345
3、将0x12345 复制给 C ,成为 C 的存储内容,复制过程为0x12345 → C ,即没有中介空间
4、调用 C 引用的对象时,直接按照 C 储存的地址前往堆内存中定位对象即可
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马