50,526
社区成员
发帖
与我相关
我的任务
分享
class Node<T>{
Node<T> next;
T t;
}
想用Java学习数据结构,你一定要树立两条规则:
一、java中除了基本类型,其他的都是“指向堆内存连续单元"的指针类型,但没有指向栈内存中基本变量的指针(如C语言中的int *p);
如 :
Object o1=new Object();
"new Object()"在堆内存中占12个字节,而所有的指针其实都是int类型,所以o1存在于栈内存中,占4字节
二、Java中所有的传递依然是”值传递“,如:
public class ObjTest {
public static void main(String[] args) {
Object o1=new Object();
testObj(o1);
}
public static void testObj(Object obj){
System.out.println(obj.toString());
}
}
1、执行到第3行时,栈被占用4字节,堆被占用12字节,假设o1的值为A0FFFX;
2、执行到第7行时,栈又多开辟了4字节,o1把A0FFFX拷贝给obj,o1和obj都指向了同一个单元;
3、执行到第8行,obj.toString()其实相当于C语言中的obj->toString(),都遵循”先寻址,后调用“的原则;
4、执行到第9行,栈中的obj被释放。
请参考:http://bbs.csdn.net/topics/390582619