• Java基础之随机生成数字和字母


    字母与数字的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));
        }
    }
  • 相关阅读:
    Flink 架构和拓扑概览
    Flink 如何背压
    流式计算的时间模型
    流式计算的背压问题
    大数据流式计算容错方案演进之路
    Flink 任务提交
    Flink wordCount
    线性回归和逻辑回归的区别
    Nginx反向代理后配置404页面
    Httpclient 实现带参文件上传
  • 原文地址:https://www.cnblogs.com/zhaoyan001/p/7677137.html
Copyright © 2020-2023  润新知