2023-2更文26-java中基本类型的存储

83 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 26 天,点击查看活动详情

java中基本类型的存储

前文

本文主要讨论的内容是关于在java语言中,基本类型的存储。

java中基本类型的存储

首先来说一下java的基本类型,主要是short、int、long、float、double、byte、char以及boolean这8种。而众所周知,我们进行数据对象的存储时,一般情况下分为将对象存储在堆上以及存储在栈上。那么基本类型对象应该是存储在哪里呢?其实这个还要分情况来讨论。

首先,看一下成员变量的情况。一般情况下的成员变量,都是随着对象的创建而出现,随着对象的销毁而销毁。所以无论是对于基本类型变量,还是对于引用类型变量,实际上都是要存放在堆中。当类对象销毁时,基本类型也会随着类的销毁被垃圾回收。

再来看一下静态变量的存储。静态变量实际上无论基本类型还是饮用类型,实际上都是存储在方法区当中。对于基本类型来说,基本类型将存储在方法区当中。而对于引用类型来说,实际的对象会存储在堆中,声明本身存储在方法区之中。java8以后,方法区由堆中改为元空间之中。

最后看一下对于局部变量的存储。基本类型的局部变量,实际上是存储在虚拟机栈之中。它与引用类型的声明实际上都在虚拟机栈中,随着栈声明与销毁。而引用类型的实际变量,则是存储在堆中。栈中引用类型存储的是堆中引用类型对象的实际地址。

另外,还有一些的特殊情况。对于string这个类型来说,如果是new的对象,实际是存储在堆中,但当string类型的变量不是通过new,而是直接进行的声明,实际上的地址可能是堆中的字符串常量池。另外的一点就是基本类型的包装类,实际上与基本类型有所不同,例如Integer等等,同样是将实际对象存储在堆之中。

总结

本文主要是对于基本类型的存储进行了知识的整理,分别对于成员变量、静态变量以及局部变量的基本类型的存储进行了总结,并对一些特殊情况进行了说明。