Java隨機生成數字和字母


原文地址:http://blog.csdn.net/yaodong_y/article/details/8115250


字母與數字的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 ~


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

[java] view plain copy
  1. import java.util.Random;  
  2.   
  3. public class StringRandom {  
  4.   
  5.     //生成隨機數字和字母,  
  6.     public String getStringRandom(int length) {  
  7.           
  8.         String val = "";  
  9.         Random random = new Random();  
  10.           
  11.         //參數length,表示生成幾位隨機數  
  12.         for(int i = 0; i < length; i++) {  
  13.               
  14.             String charOrNum = random.nextInt(2) % 2 == 0 ? "char" : "num";  
  15.             //輸出字母還是數字  
  16.             if"char".equalsIgnoreCase(charOrNum) ) {  
  17.                 //輸出是大寫字母還是小寫字母  
  18.                 int temp = random.nextInt(2) % 2 == 0 ? 65 : 97;  
  19.                 val += (char)(random.nextInt(26) + temp);  
  20.             } else if"num".equalsIgnoreCase(charOrNum) ) {  
  21.                 val += String.valueOf(random.nextInt(10));  
  22.             }  
  23.         }  
  24.         return val;  
  25.     }  
  26.       
  27.     public static void  main(String[] args) {  
  28.         StringRandom test = new StringRandom();  
  29.         //測試  
  30.         System.out.println(test.getStringRandom(8));  
  31.     }  
  32. }  

測試結果:(8位)mP8V60yt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章