人们在谈论Java 1.5的特性的时候,往往集中在范型、注释、concurrent等大的改进方面。而1.5API里的一些小动作往往容易被人忽略,其实这些新增的API小函数还是能给我们带来很多的便利。我总结了一下我常用的几个,罗列如下:
1、format和printf
非常怀念C语言里printf的format,JSDK 1.5 API提供了相同的功能。
PrintStream 和 PrintWriter 增加了一个 printf(String format, Object ... args) 方法。
2、浮点数的toHexString()方法。
作二进制分析,少不了要toHexString(),以前Integer/Long等都提供了toHexString()方法。而在1.5里,Double和Float也提供了toHexString()方法。这太令我高兴了,要知道整型转HexString很简单,但浮点型转Hex String真的有点儿麻烦。现在简单了。
3、Interger位操作的扩充函数。
Interger的位操作扩充了好几个便利的方法。如果你经常做IP头分析,或者加密解密。你就知道这些函数该多有用。
public static int highestOneBit(int i) 返回这个2进制数最左的那个1,将其后置0
public static int lowestOneBit(int i)
public static int numberOfLeadingZeros(int i)
public static int numberOfTrailingZeros(int i)
public static int bitCount(int i)
public static int rotateLeft(int i, int distance) 位左旋
public static int rotateRight(int i, int distance) 位右旋
public static int reverse(int i) 倒置
public static int signum(int i) 判断符号(正负零) 。直接返回int最高位的数值。比起 return i == 0 ? 0 : i > 0 ? 1 : -1 要快多了。
public static int reverseBytes(int i) 按字节倒置 在网络传输处理时特有用。做过C++的人没有会不记得htons() ntohs()
4、System.nanoTime() 取得纳秒级时间。
你可能还没遇到过需要取得纳秒的时候,即便做准实时毫秒也就够了。但著名的java.util.concurrent,可都是用nano seconds来记时和加锁的。
5、System.clearProperty(String key) 清除一个属性。
从前有getProperty()有setProperty(),但没有remove。我以前总是设成一个无用的数值。
6、Method增加的几个方法中,下面几个特有用:
public TypeVariable<Method>[] getTypeParameters()
public Type[] getGenericParameterTypes()
public Type[] getGenericExceptionTypes()
public boolean isVarArgs()
7、Double/Float/Long/Integer/Short/Byte等,都加入了一个静态常量 SIZE ,如Double.SIZE = 64。
早该加了。
------------------------------------------------------------------------------------------------------------