根据时间格式生成随机并且唯一的字符串
项目需求中请求报文中存在一个字段
故写一个唯一的标识
private static String getObjectId() {
SimpleDateFormat format = new SimpleDateFormat("yyMMddHHmmssSSS");
String _date = format.format(System.currentTimeMillis());
String seq = null;
StringBuffer _millisecond = new StringBuffer();
for (int i = 0; i < 5; ++i) {
_millisecond.append((char) ((int) (65.0D + Math.random() * 26.0D)));
}
seq = _millisecond.toString();
if (seq.length() >= 5) {
return _date + seq.subSequence(seq.length() - 5, seq.length());
} else {
do {
seq = "0" + seq;
} while (seq.length() < 5);
return _date + seq;
}
}
测试类
//测试类
public static void main(String[] args) {
String MsgId = getObjectId();
System.out.println("MsgId:"+MsgId);
}
结果如下:
MsgId:210819114608614CMIYJ
还有生成随机数
//生成6位随机数字
System.out.println((int)((Math.random()*9+1)*100000));
//生成5位随机数字
System.out.println((int)((Math.random()*9+1)*10000));
//生成4位随机数字
System.out.println((int)((Math.random()*9+1)*1000));
//生成3位随机数字
System.out.println((int)((Math.random()*9+1)*100));
//生成2位随机数字
System.out.println((int)((Math.random()*9+1)*10));
//生成1位随机数字
System.out.println((int)((Math.random()*9+1)));