基本数据类型和引用数据类型的区别

引用数据和基本数据的区别

基本数据类型
    
Int,long,long,float,double,short,boolean,char,byte

引用数据类型:
        类,接口,数组,枚举,注解类型

区别

  • 从概念方法来说:
    基本数据类型:变量名指向具体的数值 ,引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值

  • 从内存方法
    基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上。

  • 引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。
    数据类型在 栈和堆中的区别

  • 静态区: 保存自动全局变量和 static 变量(包括 static 全局和局部变量)。静态区的内容在总个程序的生命周期内都存在,由编译器在编译的时候分配。

  • 堆区: 一般由程序员分配释放,由 malloc 系列函数或 new 操作符分配的内存,其生命周期由 free 或 delete 决定。在没有释放之前一直存在,直到程序结束,由OS释放。其特点是使用灵活,空间比较大,但容易出错

  • 栈区: 由编译器自动分配释放,保存局部变量,栈上的内容只在函数的范围内存在,当函数运行结束,这些内容也会自动被销毁,其特点是效率高,但空间大小有限

思维导图如下:

推荐阅读更多精彩内容