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

05月12日 收藏 0 评论 2 java开发

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

转载声明:文章来源https://zhuanlan.zhihu.com/p/359974814

开发了这么多年,如今从头看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)

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

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

是不是理解更为深刻了呢?如果想继续学习,快点赞关注吧,错过这个村,就没这个店了哟。

C 2条回复 评论
大大大

推荐一个我使用过的框架,https://github.com/wuyouzhuguli/FEBS-Vue,UI还不错

发表于 2023-03-27 23:00:00
0 0
紫侠仙子

可以,从易到难,感觉基础薄弱的人也能通过这些题目提高自己

发表于 2022-06-10 21:00:00
0 0