工作时,无意间看到同事的代码是这样写的:
public static void memcpy(byte[] dst, int dstindex, byte[] src, int srcindex, int len ){
for(int i = 0; i < len; i++){
dst[dstindex + i] = src[srcindex + i];
}
}
public static int memset(byte[] dst, int ch, int len){
for(int i = 0; i < len; i++){
dst[i] = (byte) ch;
}
return len;
}
上面的代码,第一个方法实现byte数组之间的值复制,第二个方法实现设置数组默认值。两个方法在功能上没什么问题,确实可以实现我们想要的功能,究竟有什么问题呢?
本文,主要倡导程序员尽量使用Java类库自带方法,也希望Java开发者能对Java类库有更多的了解。为什么倡导使用Java类库自带方法?Java类库自带方法,大多是native方法,这些方法在执行效率以及并发安全上性能都是非常好的,且需要进行这样处理的软件大多也都是数据处理量比较大的代码。你确定自己编写的实现方法能达到这样的要求?再者,既然类库已经有,为何还要自己编写。比如先前的代码,我们大可以这样实现:
System.arraycopy(src, srcindex, dst, dstindex, len);
Arrays.fill(dst, ch);
下面将列出一些比较常用的类库方法。
数组处理通用方法
- Arrays.asList(array); //根据数组内容返回ArrayList。
- Arrays.fill(dst, ch); //初始化数组值,有多个重载方法哦。
- Arrays.equals(array1, array2); //数组判断是否相等,多个重载方法。
- Arrays.copyOf(original, newLength, newType); //数组复制到新数组,多个重载方法。
- Arrays.copyOfRange(original, start, end); //数组复制到新数组,多个重载方法。
- Arrays.toString(array); //数组转化为String,多个重载方法。
- System.arraycopy(src, srcindex, dst, dstindex, len); //复制数组
数值类型通用方法
- Double.compare(double1, double2); //数据比较大小
- Float.compare(float1, float2);
- Integer.compare(lhs, rhs);
- Integer.valueOf(string); //内容转换为包装类
- Math.abs(d); //获取绝对值,多个重载方法
- Math.acos(d); //计算cos值
- Math.asin(d); //计算sin值
- Math.exp(d); //计算e指数值
- Math.pow(x, y); //计算x的y次幂值
- Math.max(d1, d2); //获取最大值
- Math.min(d1, d2); //获取最小值
- Math.round(d); //获取四舍五入值
字符串
- String.format(format, args); //字符串按照格式输出
- String.valueOf(value); //内容转换为String,有多个重载方法。
文章旨在推荐大家尽量用通用方法。个人见识有限,欢迎各位大牛留言,添加更多的类库通用方法。