java中除了基础类型外的变量类型,全部都是引用类型,与C和C++的指针类似。
在内存中区别类和对象:
类似静态的概念,首先放在在代码区,声明的局部变量放在堆栈中。
对象动态概念,放入堆内存。
为什么new出来的东西放到堆内存?
而对象是new出来的东西,是在代码执行的时候才存在的。堆内存是动态分配内存的,只有运行的过程中才会将new出来的对象放入堆内存中的,只有运行的过程中才会new一个对象放入到堆内存,没有办法开始就分配,必须在运行期分配。 而放在堆栈中的局部变量,不许要运行就放在堆栈中,使用局部变量完毕等待java的垃圾回收机制回收,不会立即消失。
堆内存像是你自己在家里做饭,做什么样子的饭可以自由搭配,自由度较大。而栈内存,相当于你去饭店吃饭,点菜(申请),吃饭付钱(使用),服务员(垃圾机制)收拾盘子,就是自由度较小。关于更多的堆内存:http://baike.baidu.com/view/1962829.htm
对于成员变量和方法:
同一个类的每个对象有不同的成员变量存储空间。
而同一个类的每一个方法共享该类的方法。
我们来看一个小例子:
我想如果换做你是内存分配的管理员,你也会这样分配内存的,符合生活规律~~~