基本数据类型和引用数据类型的区别
2017-11-23 本文已影响26人
chcvn
引用数据和基本数据的区别
基本数据类型
Int,long,long,float,double,short,boolean,char,byte
引用数据类型:
类,接口,数组,枚举,注解类型
区别
-
从概念方法来说:
基本数据类型:变量名指向具体的数值 ,引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值 -
从内存方法
基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。 -
引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
数据类型在 栈和堆中的区别 -
静态区: 保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。
-
堆区: 一般由程序员分配释放,由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,由OS释放。其特点是使用灵活,空间比较大,但容易出错
-
栈区: 由编译器自动分配释放,保存局部变量,栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限
思维导图如下:
![](http://oypem0qjb.bkt.clouddn.com/Stone/%E5%BC%95%E7%94%A8%E6%95%B0%E6%8D%AE%E5%92%8C%E5%9F%BA%E6%9C%AC%E6%95%B0%E6%8D%AE%E7%9A%84%E5%8C%BA%E5%88%AB.jpg)