同志们我又开始动笔了……
这两天在看Java的基础,看到Integer相关的内容,同时想起3年前一个大佬曾经面试过我这块,今天做个总结。
Java声称一切皆为对象,实际上也有一个例外:原始数据类型(Primitive Types)。一共有8个,分别是:boolean、byte 、short、char、int、float、double、long。他们不具备对象的特性,也没有自己的方法。
Integer,是int的包装类,从源码可知,Integer包含一个int型的字段value,用于存储数据,该value字段是final类型的,即生成了一个Integer对象后,该对象的数据值是不可更改的。还有两个常量MIN_VALUE表示int的最小值,MAX_VALUE表示int的最大值,即范围-2^31到2^31-1。
相比于原始数据类型,Integer封装了常用的一些方法,比如字符串转Integer,大小比较等。Java可以根据上下文,自动进行装箱拆箱,极大地简化大家平日的开发工作。
稍微有些开发经验的同学,应该也知道,Integer有个值缓存的机制。我们好好聊聊这个值缓存。
Java对象的创建,一般都是通过new的方式,Integer传统的方式也是如此。其实,通过观察和经验总结,发现大部分数据操作都集中在有限的、较小的范围内,那其实可以参考一般的缓存思想,虚拟机事先就提供好常用的Integer对象,那就可以有效的改进性能了。
虚拟机默认提供的Integer对象ÿ