首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 生成指定長度隨機字符串工具方法

     編輯:Java 綜合教學

需求場景

業務中常需生成驗證碼、臨時密碼、唯一標識等隨機字符串,且長度可配置。本文提供一個通用、高效的實現。

核心代碼

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();
}

關鍵點解析

  • 字符池固定:62 個可打印字符,避免特殊符號導致編碼問題
  • Random 線程不安全:高併發場景建議改用 ThreadLocalRandom 或 SecureRandom
  • StringBuilder 預分配:構造時指定 length,避免擴容開銷
  • 邊界處理:nextInt(62) 返回 [0, 61],完美匹配數組下標

進階擴展建議

  1. 加密強度需求:改用 SecureRandom,適用於 Token、Session ID
  2. 自定義字符集:將 codeSequence 參數化,支援十六進制、Base62 等
  3. 性能優化:大批量生成時可預先生成字節數組,再轉字符串

使用示例

// 生成 6 位驗證碼
String code6 = randomCode(6); // 例:"A7k9B2"

// 生成 32 位 Token
String token32 = randomCode(32);
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved