JDK源码分析----Integer

JDK源码分析----Integer

http://blog.csdn.net/chenloveit/article/details/18969459

http://www.tuicool.com/articles/22aQjuu

 

java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)

http://blog.sina.com.cn/s/blog_99201d890101hd6s.html

移位操作要注意的问题是高(低)位是补0还是补1和对char, byte, short型的操作:
(1)<< : (left-shift), 最低位补0
(2)>> : (signed right-shift), 右移过程使用符号位扩展(sign extension),即如果符号为为1则高位补1, 是0则补0,也就是逻辑右移
(3)>>> : (unsigned right-shit),右移过程使用零扩展(zero extension),即最高位一律补0,也就是算术右移
(4)移位操作的数据类型可以是byte, char, short, int, long型,但是对byte, char, short进行操作时会先把它们变成一个int型,最后得到一个int型的结果,对long型操作时得到一个long型结果,不可以对boolean型进行操作。
(5)移位操作符可以和=合并起来,即 <<= 、 >>= 和 >>>=。例如 a >>= 2; 表示将a右移两位后的值重新赋给a。当时在使用这三个操作符对 byte, char, short型数据进行操作时要注意,例如有一下代码片段:

http://blog.sina.com.cn/s/blog_439f80c40100n0hc.html

 

 

 

我记得以前看JVM的书籍时,好像int是JVM里面的基本单元,一个long其实是用两个int进行操作的,boolean、byte、short其实都是用int的。再加上网上一哥们的实际测试(http://jiahua8859-163-com.iteye.com/blog/573535)发现下面的规律: 

int的运算速度最快,short次之,byte再次之,long再次之。float和double运算速度最慢。 

 

这解释了,一旦把i降到int范围内之后,就用int进行计算,当然,计算方式是一致的; 

 

还有一些规律:加减法、位运算、布尔运算很快、乘法次之、除法更次之;除法比乘法慢好几倍,这也解释了为什么: 

q2 = (i2 * 52429) >>> (16+3); 不直接写成 q2/=10;了; 

( >>>(16+3)就是除以2^19,即524288,52429/524288=0.1000003814697265625 ) 

 

也解释了为什么在i2<65536之后才进行上述的计算,因为i2*52429不会在int范围内溢出; 

 

综上,这个方法是进行了最大优化了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
jdk-11-windows是指Java开发工具包(Java Development Kit)的第11个版本,适用于Windows操作系统。JDK是使用Java语言进行开发的应用程序和软件的环境,它提供了许多工具和功能,可用于编写、编译和运行Java程序。 JDK-11包含了许多新的特性和改进,使得Java编程更加方便和高效。其中一项突出的特性是JVM(Java虚拟机)的性能改进,它可以提供更快速和更高效的执行速度。其他一些特性包括G1垃圾回收器的增强和适用于观察、诊断和监控Java程序的Java Flight Recorder和Java Mission Control工具等。 对于Windows用户来说,JDK-11提供了易于安装和使用的Windows平台上的开发环境。它包括了JRE(Java运行环境)和用于开发、调试和测试Java应用程序的工具集。通过JDK-11,开发人员可以利用Windows操作系统的优势和特性,进行快速、高效和可靠的Java开发。 此外,JDK-11还提供了许多与安全性和稳定性相关的改进。它包含了新的安全性特性,可以帮助开发人员保护他们的应用程序免受潜在的安全威胁。另外,JDK-11还包含了一些稳定性改进,可以提高应用程序的性能和可靠性。 总之,JDK-11-windows是适用于Windows操作系统的Java开发工具包的最新版本。它提供了许多新的特性和改进,使得Java开发更加方便、高效和安全。对于Windows用户来说,使用JDK-11可以提供更好的开发体验,使他们能够更轻松地创建出优秀的Java应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值