小知识,大挑战!本文正在参与“ 程序员必备小知识 ”创作活动
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
一,首先用一张表格介绍下基本数据类型
二,谈下基本数据同包装类的区别与联系
区别为,存储方面:基本数据类型存储在栈中,而包装类存储在堆中;传递方面:基本数据传递的数据,而包装类传递的是引用
联系上,包装类用于集合中的泛型使用,且用于支持入参及出参为空场景,但二者的转换存在装包拆包的过程
三,我们关注下Number抽象类下的方法
可以发现其子类中的整形与浮点数之间支持自动转换与强制转化。
四,Number类的缓存策略
首先看下Interge的内部类IntergeCache,类结构如下:
调用valueOf()方法时默认 -128 - 127之间的数据,且支持JVM自定义可以通过 JVM 的启动参数 -XX:AutoBoxCacheMax=size 修改
而ByteCache, ShortCache, LongCache, 执行相同策略-128-127, CharacterCach支持的是0-128。不支持JVM配置,具体见源码类结构。以ByteCache为例:
五,大数据操作及小数精度操作
BigInteger
类似于原始整数类型,但允许任意大的值。
常用于安全性和加密应用程序中
BigDecimal
表示一个不可变的任意精度带符号十进制数字。
使用以参数类型为String的构造函数。
常用于浮点数的精度计算(加减乘及四舍五入)中,需要注意的是用于除法计算时,需指定小数点。
总结,以上是对Java的基本数据类型的梳理及应用,在日常工作中需要注意场景选择合适的数据类型提高应用性能。下篇我们会聊聊字符串的那些小秘密。