在c++中如int x;double y;这些是定义,也就是说在栈上分配了内存,而对于对象,比如自定义的类:X str;也就是说在栈上分配了引用或句柄,没有具体分配对象的内存,只有str=new string();才会真正为对象在堆上分配空间。而extern X str;就是声明。
在java中int x;这些也是定义,分配了栈空间。ArrayList al;也和C++的类似,只分配了引用空间,不晓得理解的对不对?