業務中常需生成驗證碼、臨時密碼、唯一標識等隨機字符串,且長度可配置。本文提供一個通用、高效的實現。
public static String randomCode(int length) {
// 字符池:大小寫字母 + 數字,共 62 個字符
char[] codeSequence = {
'A','B','C','D','E','F','G','H','I','J','K','L','M',
'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
'0','1','2','3','4','5','6','7','8','9',
'a','b','c','d','e','f','g','h','i','j','k','l','m',
'n','o','p','q','r','s','t','u','v','w','x','y','z'
};
Random random = new Random();
StringBuilder builder = new StringBuilder(length); // 預分配容量
for (int i = 0; i < length; i++) {
int idx = random.nextInt(codeSequence.length); // 62
builder.append(codeSequence[idx]);
}
return builder.toString();
}
ThreadLocalRandom 或 SecureRandomlength,避免擴容開銷nextInt(62) 返回 [0, 61],完美匹配數組下標SecureRandom,適用於 Token、Session IDcodeSequence 參數化,支援十六進制、Base62 等// 生成 6 位驗證碼 String code6 = randomCode(6); // 例:"A7k9B2" // 生成 32 位 Token String token32 = randomCode(32);