您的位置 首页 java

Java中的8大数据类型,在内存中是如何存储的,一节课学会

开发了这么多年,如今从头看 Java 系列的入门知识,却别有一番风味……

有一次年薪70万的架构师问我, 五年工作经验和十年工作经验的程序员有什么区别 ?就是在 于细节的把握程度上 ,比如注释加得好,代码结构清晰,bug率低等细节上。

如今也慢慢有了体会……废话不多说,开始。

如果让你回想一下,你用得最多的数据类型是什么?80%以上的人估计都会说String .甚至有位资深工程师跟我说,开发时和第三方系统对接,只需遵守一个原则就行,万事万物皆String.这样就能忽略数据类型相关的工作量,大大提高效率。

但String却不在8大基本数据类型之中哦 ,它属于引用数据类型。

那8大数据类型都有什么呢?按占用存储空间从大到少的顺序依次为:

boolean , short ,char,int, long , float ,double

占用的内存空间大小如图所示:

如果更细一点的分类,也可以再细分为数值型,字符型,布尔型。

大多数的教材到这一步就结束了,但是知道这些有什么用呢?现在计算机内存这么大,JVM又有着较好的垃圾回收机制,基于JDK16还引入了 ZGC( 可扩展的低延迟垃圾收集器) ,基本数据类型应该没什么要学的吧?

真的如此吗?有没有想过当一名优秀的程序员?还想不想超越其他人了?在大型项目上,合理的数据类型对内存空间及运行效率上都会有不同程度的影响。

我们都知道现在是冯诺依曼体系的计算机结构,以存储为中心的, 而受限于内存,缓存,硬盘等读取速度的巨大差异,IO读取将对程序运行效率产生不可忽视的影响

那它们在内存中是如何存储的呢?

举例,下面两个变更在内存中长什么样子呢?

int age; //声明int型变量

char char1 = ‘r’; //声明char型变量并赋值

内存可分为3个区域:

系统区(OS)

程序区(Program)

数据区(Data)

当程序执行时,程序代码会加载到内存中的程序区,数据暂时存储在数据区中。

下面我们看一下,在内存中占用的空间吧:

 import org.openjdk.jol.info.ClassLayout;
public class Main {
    public static void main(String[] args) {
        boolean b = true;
        System.out.println("boolean占用存储空间为"+ClassLayout.parseInstance(b).instanceSize());
        System.out.println(" Byte 占用存储空间为"+Byte.SIZE);
        System.out.println("char占用存储空间为"+Character.SIZE);
        System.out.println("short占用存储空间为"+Short.SIZE);
        System.out.println("int占用存储空间为"+Integer.SIZE);
        System.out.println("long占用存储空间为"+Long.SIZE);
        System.out.println("float占用存储空间为"+Float.SIZE);
        System.out.println("double占用存储空间为"+Double.SIZE);
    }
}  

是不是理解更为深刻了呢?

如果想继续学习,快点赞关注吧,错过这个村,就没这个店了哟。

文章来源:智云一二三科技

文章标题:Java中的8大数据类型,在内存中是如何存储的,一节课学会

文章地址:https://www.zhihuclub.com/185215.shtml

关于作者: 智云科技

热门文章

网站地图