数据类型用来确定要存储在内存单元中的数据的类型;
在Java中,数据类型被区分成两个种类:
原始数据类型
引用数据类型
八种原始数据类型
在Java中,除了上述8种原始数据类型的变量以外,其余
的全都属于引用数据类型,其中包括:
– 数组
– 对象
存储在引用类型变量中的值是该变量表示的值的地址;
可以借用C语言中指针的概念来理解引用数据类型。
C语言中的内存分配
C语言中内存分配的两种形式:
栈内存:
– 特点:和作用域同生命周期,自动申请,自动释放。
– 申请方式:局部变量,形式参数。
– 栈内存中的空间一般都有名称,通过变量名访问其存储的数据 。
堆内存(即动态内存分配):
– 特点:手工申请,手工释放,生命周期由程序员决定。
– 申请方式:由malloc函数或calloc函数申请,realloc函数进行调整,free函数负责释放。
– 堆内存中的空间一般没有名称,只能通过指针访问。
Java中的内存分配
Java中的原始数据类型与C语言中的基本数据类型一样,其变量都是在栈中分配空间;
而除了8种原始数据类型以外,其它的任何数据都不可以在栈中分配,只能到堆中开辟空间,而在堆中分配的空间又只能通过指针访问;
通过指针访问堆内存的方式,在Java中被称作引用数据类型;
可以认为,Java中的引用就类似于C语言中的指针,只是对指针进行了一定程度上的包装,避免了因直接操作指针而造成的数据意外损坏,从而导致程序错误的情况。