java随机生成字符串(字符随机生成类 生成随机字符组合)

 更新时间:2013年12月30日 10:22:40   作者:  
java随机生成字符串,字符组合多样,可以大小字组合、大+小字符+数字等方式,大家参考使用吧

复制代码 代码如下:

package com.phyl.password;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
/**
 * 字符随机生成类
 * @author ASUS
 *
 */
public class PassWord {

 /**
  * 密码类型枚举
  * @author ASUS
  */
 public static enum TYPE {
  /**
   * 字符型
   */
  LETTER,
  /**
   * 大写字符型
   */
  CAPITAL,
  /**
   * 数字型
   */
  NUMBER,
  /**
   * 符号型
   */
  SIGN,
  /**
   * 大+小字符 型
   */
  LETTER_CAPITAL,
  /**
   * 小字符+数字 型
   */
  LETTER_NUMBER,
  /**
   * 大+小字符+数字 型
   */
  LETTER_CAPITAL_NUMBER,
  /**
   * 大+小字符+数字+符号 型
   */
  LETTER_CAPITAL_NUMBER_SIGN
 }

 private static String[] lowercase = {
   "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"};

 private static String[] capital = {
   "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"}; 

 private static String[] number = {
   "1","2","3","4","5","6","7","8","9","0"};

 private static String[] sign = {
   "~","!","@","#","$","%","^","&","*","(",")","_","+","`","-","=",
   "{","}","|",":","\"","<",">","?",
   "[","]","\\",";","'",",",".","/"};

 /**
  * 静态随机数
  */
 private static Random random = new Random();

 public static void main(String[] args) {
  System.out.println(PassWord.getRandom(24, PassWord.TYPE.CAPITAL));
 }

 /**
  * 获取随机组合码
  * @param num 位数
  * @param type 类型
  * @type
  * <br>字符型 LETTER,
  * <br>大写字符型 CAPITAL,
  * <br>数字型 NUMBER,
  * <br>符号型 SIGN,
  * <br>大+小字符型 LETTER_CAPITAL,
  * <br>小字符+数字 型 LETTER_NUMBER,
  * <br>大+小字符+数字 型 LETTER_CAPITAL_NUMBER,
  * <br>大+小字符+数字+符号 型 LETTER_CAPITAL_NUMBER_SIGN
  */
 public static String getRandom(int num,TYPE type){
  ArrayList<String> temp = new ArrayList<String>();
  StringBuffer code = new StringBuffer();
  if(type == TYPE.LETTER){
   temp.addAll(Arrays.asList(lowercase));
  }else if(type == TYPE.CAPITAL){
   temp.addAll(Arrays.asList(capital));
  }else if(type == TYPE.NUMBER){
   temp.addAll(Arrays.asList(number));
  }else if(type == TYPE.SIGN){
   temp.addAll(Arrays.asList(sign));
  }else if(type == TYPE.LETTER_CAPITAL){
   temp.addAll(Arrays.asList(lowercase));
   temp.addAll(Arrays.asList(capital));
  }else if(type == TYPE.LETTER_NUMBER){
   temp.addAll(Arrays.asList(lowercase));
   temp.addAll(Arrays.asList(number));
  }else if(type == TYPE.LETTER_CAPITAL_NUMBER){
   temp.addAll(Arrays.asList(lowercase));
   temp.addAll(Arrays.asList(capital));
   temp.addAll(Arrays.asList(number));
  }else if(type == TYPE.LETTER_CAPITAL_NUMBER_SIGN){
   temp.addAll(Arrays.asList(lowercase));
   temp.addAll(Arrays.asList(capital));
   temp.addAll(Arrays.asList(number));
   temp.addAll(Arrays.asList(sign));
  }
  for (int i = 0; i < num; i++) {
   code.append(temp.get(random.nextInt(temp.size())));
  }
  return code.toString();
 }

}

相关文章

  • Spring实战之ResourceLoader接口资源加载用法示例

    Spring实战之ResourceLoader接口资源加载用法示例

    这篇文章主要介绍了Spring实战之ResourceLoader接口资源加载用法,结合实例形式分析了Spring使用ResourceLoader接口加载资源的相关配置与使用技巧,需要的朋友可以参考下
    2020-01-01
  • java关键字final使用方法详解

    java关键字final使用方法详解

    在程序设计中,我们有时可能希望某些数据是不能够改变的,这个时候final就有用武之地了。final是java的关键字,本文就详细说明一下他的使用方法
    2013-11-11
  • Java注解详解及实现自定义注解的方法

    Java注解详解及实现自定义注解的方法

    这篇文章主要介绍了Java注解详解及实现自定义注解的方法,本文给大家介绍了jdk中预定义的一些注解及自定义注解的相关知识,需要的朋友可以参考下
    2022-06-06
  • java冒泡排序和选择排序详解

    java冒泡排序和选择排序详解

    这篇文章主要介绍了java数组算法例题代码详解(冒泡排序,选择排序),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • SpringBoot3各种配置的优先级对比小结

    SpringBoot3各种配置的优先级对比小结

    SpringBoot3提供了多种配置来源以满足不同场景下的需求,本文详细介绍了SpringBoot3中的配置优先级对比小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12
  • 带你盘点Java的五种运算符

    带你盘点Java的五种运算符

    这篇文章主要介绍了Java基本数据类型和运算符,结合实例形式详细分析了java基本数据类型、数据类型转换、算术运算符、逻辑运算符等相关原理与操作技巧,需要的朋友可以参考下
    2021-07-07
  • Java死锁代码实例及产生死锁必备的四个条件

    Java死锁代码实例及产生死锁必备的四个条件

    这篇文章主要介绍了Java死锁代码实例及产生死锁必备的四个条件,Java 发生死锁的根本原因是,在申请锁时发生了交叉闭环申请,synchronized在开发中最好不要嵌套使用,容易导致死锁,需要的朋友可以参考下
    2024-01-01
  • 简单了解Java垃圾回收器的种类

    简单了解Java垃圾回收器的种类

    这篇文章主要介绍了简单了解Java垃圾回收器的种类,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • SpringBoot使用Redis对用户IP进行接口限流的示例详解

    SpringBoot使用Redis对用户IP进行接口限流的示例详解

    使用接口限流的主要目的在于提高系统的稳定性,防止接口被恶意打击,这篇文章主要介绍了SpringBoot使用Redis对用户IP进行接口限流的示例代码,需要的朋友可以参考下
    2023-07-07
  • 一文带你搞懂Java中i++ 和 ++i的区别

    一文带你搞懂Java中i++ 和 ++i的区别

    在Java中,i++和++i都用于递增变量i的值,但它们之间有一个细微的区别,i++是后缀递增操作符,++i是前缀递增操作符,在大多数情况下,这两种递增操作的结果都是一样的,但在某些特定的表达式和逻辑中,它们可能会产生不同的效果,本文将带大家搞清Java中i++ 和 ++i的区别
    2023-09-09

最新评论