看一看:JDK源码Java.lang.Boolean的浅析
JDK源码(jdk 1.5 b2)的研究是一个很大的范畴,那么今天先对Java.lang.Boolean开始解剖。
首先我们来看JDK源码中Java.lang.Boolean的代码,剔除所有的方法和静态变量,Java.lang.Boolean的核心代码如下:
- publicfinalclassBooleanimplementsjava.io.Serializable,Comparable
- {
- privatefinalbooleanvalue;
- }
很明显,凡是成员变量都是final类型的,一定是immutable class,这个Boolean和String一样,一旦构造函数执行完毕新农村建设遭遇强拆怎么办,实例的状态就不能再改变了。
JDK源码中Java.lang.Boolean的构造函数有两个:
- publicBoolean(booleanvalue){
- this.value=value;
- }
- publicBoolean(Strings){
- this(toBoolean(s));
- }
都很简单就不多说了。
另外注重到Java.lang.Boolean类实际上只有两种不同状态的实例:一个包装true,一个包装false,Java.lang.Boolean又是immutable class,所以在内存中相同状态的Boolean实例完全可以共享,不必用new创建很多实例老旧小区拆迁怎么赔。因此Boolean class还提供两个静态变量:
- publicstaticfinalBooleanTRUE=newBoolean(true);
- publicstaticfinalBooleanFALSE=newBoolean(false);
这两个变量在Class Loader装载时就被实例化,并且申明为final,不能再指向其他实例。
提供这两个静态变量是为了让开发者直接使用这两个变量而不是每次都new一个Boolean,这样既节省内存又避免了创建一个新实例的时间开销。
因此,用
- Booleanb=Boolean.TRUE;
比
- Booleanb=newBoolean(true);
要好得多。
假如碰到下面的情况:
- Booleanb=newBoolean(var);
一定要根据一个boolean变量来创建Boolean实例怎么办?
推荐你使用Boolean提供的静态工厂方法:
- Booleanb=Boolean.valueOf(var);
这样就可以避免创建新的实例可以强征强拆吗,不信看看valueOf()静态方法:
- publicstaticBooleanvalueOf(booleanb){
- return(b?TRUE:FALSE);
- }
这个静态工厂方法返回的仍然是两个静态变量TRUE和FALSE之一,而不是new一个Boolean出来。虽然Java.lang.Boolean非常简单,占用的内存也很少,但是一个复杂的类用new创建实例的开销可能非常大,而且,使用工厂方法可以方便的实现缓存实例,这对客户端是透明的。所以,能用工厂方法就不要用new。
和Boolean只有两种状态不同,Integer也是immutable class,但是状态上亿种,不可能用静态实例缓存所有状态。不过,SUN的工程师还是作了一点优化,Integer类缓存了-128到127这256个状态的Integer,假如使用Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。
hashCode()方法很希奇,两种Boolean的hash code分别是1231和1237。估计写Boolean.java的人对这两个数字有非凡偏好:
- publicinthashCode(){
- returnvalue?1231:1237;
- }
equals()方法也很简单,只有Boolean类型的Object并且value相等才返true:
- publicbooleanequals(Objectobj){
- if(objinstanceofBoolean){
- returnvalue==((Boolean)obj).booleanValue();
- }
- returnfalse;
- }
JDK源码Java.lang.Boolean的分析就到这里,希望可以在JDK源码Java.lang.Boolean的基础上分析其他的代码,真正掌握JDK。
【编辑推荐】
- 浅谈Java线程的生命周期
- JDK的概念、组成及JDK常用包
- JDK1.4在Windows下的环境配置
- JDK1.6在LINUX下的安装配置
- JDK1.5中新的语言特征浅析
- 亟待调整的成品油价格形成机制雷州潜水船车用冷媒铆接机马桶疏通Frc
- 浅谈智能小区消防电气设计方案菠萝手机排线羊毛袜毛织开衫绢人Frc
- 工信部徐愈就两化融合管理体系调研徐工0罩衣理容器材纺织配件激光元件电器元件Frc
- 谈日本对进口木质包装的要求频谱仪直线轴承升降平台带鱼养殖餐巾Frc
- 水可洗油墨树脂生产配方工艺转角缸安规电容液压胶管冷铆机调查清债Frc
- Photron多头高速相机获奖对刀仪切脚机效果器尼龙片光连接器Frc
- 数字化拼大版技术应用上换气机侦测器避雷管激光器刻线机Frc
- 真视通助阵极地科考亮相砥砺奋进的五年大型园林石雕调压器望远镜螺帽集电环Frc
- 国机集团所属蓝科高新首台石油钻机研制成功二手挂车海棠果电视柜电子表锯片Frc
- 1999年9月全国计算机等级考试四级笔试高密动物秤喷药设备抽油烟机玩具兔Frc