1. 程式人生 > >Java基礎之隨機生成數字和字母

Java基礎之隨機生成數字和字母

字符集 其中 大寫 排列 += 例子 order ascii碼表 方法

字母與數字的ASCII碼

目 前計算機中用得最廣泛的 字符集及其編碼,是由美國國家標準局(ANSI)制定的ASCII碼(American Standard Code for Information Interchange,美國標準信息交換碼),它已被國際標準化組織(ISO)定為國際標準,稱為ISO 646標準。適用於所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。
因為1位二進制數可以表示(21=)2種狀態:0、1;而 2位二進制數可以表示(22)=4種狀態:00、01、10、11;依次類推,7位二進制數可以表示(27=)128種狀態,每種狀態都唯一地編為一個7 位的二進制碼,對應一個字符(或控制碼),這些碼可以排列成一個十進制序號0~127。所以,7位ASCII碼是用七位二進制數進行編碼的,可以表示 128個字符。
第0~32號及第127號(共34個)是控制字符或通訊專用字符,如控制符:LF(換行)、CR(回車)、FF(換頁)、DEL(刪除)、BEL(振鈴)等;通訊專用字符:SOH(文頭)、EOT(文尾)、ACK(確認)等;
第33~126號(共94個)是字符,其中第48~57號為0~9十個阿拉伯數字;65~90號為26個大寫英文字母,97~122號為26個小寫英文字母,其余為一些標點符號、運算符號等。
註意:在計算機的存儲單元中,一個ASCII碼值占一個字節(8個二進制位),其最高位(b7)用作奇偶校驗位。所謂奇偶校驗,是指在代碼傳送過程中用來 檢驗是否出現錯誤的一種方法,一般分奇校驗和偶校驗兩種。奇校驗規定:正確的代碼一個字節中1的個數必須是奇數,若非奇數,則在最高位b7添1;偶校驗規 定:正確的代碼一個字節中1的個數必須是偶數,若非偶數,則在最高位b7添1。
為了便於查詢,以下列出ASCII碼表:常用ASCII 碼對照表

ASCII碼 鍵盤 ASCII 碼 鍵盤 ASCII 碼 鍵盤 ASCII 碼 鍵盤
27 ESC 32 SPACE 33 ! 34 "
35 # 36 $ 37 % 38 &
39 40 ( 41 ) 42 *
43 + 44 45 - 46 .
47 / 48 0 49 1 50 2
51 3 52 4 53 5 54 6
55 7 56 8 57 9 58 :
59 ; 60 < 61 = 62 >
63 ? 64 @ 65 A 66 B
67 C 68 D 69 E 70 F
71 G 72 H 73 I 74 J
75 K 76 L 77 M 78 N
79 O 80 P 81 Q 82 R
83 S 84 T 85 U 86 V
87 W 88 X 89 Y 90 Z
91 [ 92 \ 93 ] 94 ^
95 _ 96 ` 97 a 98 b
99 c 100 d 101 e 102 f
103 g 104 h 105 i 106 j
107 k 108 l 109 m 110 n
111 o 112 p 113 q 114 r
115 s 116 t 117 u 118 v
119 w 120 x 121 y 122

z

123 { 124 | 125 } 126 ~

利用這個原理,編寫有用的小例子

import java.util.Random;

public class StringRandom {

    //生成隨機數字和字母,
    public String getStringRandom(int length) {
        
        String val = "";
        Random random = new Random();
        
        //參數length,表示生成幾位隨機數
        for(int i = 0; i < length; i++) {
            
            String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";
            //輸出字母還是數字
            if( "char".equalsIgnoreCase(charOrNum) ) {
                //輸出是大寫字母還是小寫字母
                int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;
                val += (char)(random.nextInt(26) + temp);
            } else if( "num".equalsIgnoreCase(charOrNum) ) {
                val += String.valueOf(random.nextInt(10));
            }
        }
        return val;
    }
    
    public static void  main(String[] args) {
        StringRandom test = new StringRandom();
        //測試
        System.out.println(test.getStringRandom(8));
    }
}

Java基礎之隨機生成數字和字母