文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java随机生成字符串的4种方式

2023-09-08 19:27

关注

java.util.UUID 类可用于生成UUID, 它的static randomUUID方法返回一个32个字符的字符串。

import java.util.UUID;public class RandomStringGenerator {    public static void main(String[] args) {        String randomString = usingUUID();        System.out.println("Random string is: " + randomString);        System.out.println("Random string of 8 characters is: "            + randomString.substring(0, 8));    }    static String usingUUID() {        UUID randomUUID = UUID.randomUUID();        return randomUUID.toString().replaceAll("-", "");    }}

注意randomUUID方法生成的字符串包含“-”。上面的示例通过使用空字符串替换了。

以上程序输出为:

Random string is: 923ed6ec4d04452eaf258ec8a4391a0fRandom string of 8 characters is: 923ed6ec

使用Math类

下面的算法可以使用这种方法生成一个固定长度的随机字符串。

示例代码:

import java.util.Math;public class RandomStringGenerator {    public static void main(String[] args) {        String randomString = usingMath(10);        System.out.println("Random string is: " + randomString);    }    static String usingMath(int length) {        String alphabetsInUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";        String alphabetsInLowerCase = "abcdefghijklmnopqrstuvwxyz";        String numbers = "0123456789";        // create a super set of all characters        String allCharacters = alphabetsInLowerCase + alphabetsInUpperCase + numbers;        // initialize a string to hold result        StringBuffer randomString = new StringBuffer();        // loop for 10 times        for (int i = 0; i < length; i++) {            // generate a random number between 0 and length of all characters            int randomIndex = (int)(Math.random() * allCharacters.length());            // retrieve character at index and add it to result            randomString.append(allCharacters.charAt(randomIndex));        }        return randomString.toString();    }}

以上程序输出为:

Random string is: kqNG2SYHeFRandom string is: lCppqqUg8PRandom string is: GGiFiEP5Dz

这种方法使您能够更好地控制需要包含在随机字符串中的字符。例如,如果您不想要数字,那么就从超集中删除它们。如果您想要特殊字符,那么就在超集中添加一组特殊字符。

使用Random类

此方法与Math方法类似,即创建所有字符的超集,生成一个随机索引,并使用该索引处的字符创建最终字符串。

这种方法使用java.util.Random 类生成随机索引。

示例代码:

import java.util.Random;public class RandomStringGenerator {    public static void main(String[] args) {        String randomString = usingRandom(10);        System.out.println("Random string is: " + randomString);    }    static String usingRandom(int length) {        String alphabetsInUpperCase = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";        String alphabetsInLowerCase = "abcdefghijklmnopqrstuvwxyz";        String numbers = "0123456789";        // create a super set of all characters        String allCharacters = alphabetsInLowerCase + alphabetsInUpperCase + numbers;        // initialize a string to hold result        StringBuffer randomString = new StringBuffer();        // loop for 10 times        for (int i = 0; i < length; i++) {            // generate a random number between 0 and length of all characters             int randomIndex = random.nextInt(allCharacters.length());            // retrieve character at index and add it to result            randomString.append(allCharacters.charAt(randomIndex));        }        return randomString.toString();   }}

以上程序输出为:

Random string is: TycOBOxITsRandom string is: 7LLWVbg0psRandom string is: p6VyqdO6bT

您还可以使用java.util.SecureRandom类生成一个随机整数。它是java.util.Random的一个子类。

使用RandomStringUtils类

Apache Commons Lang库有一个org.apache.commons.lang.RandomStringUtils类,该类具有生成固定长度的随机字符串的方法。

它的方法可以生成只包含字母(随机字母)、数字(随机数字)或两者(随机字母数字)的随机字符串。

所有这些方法都接受一个整数参数,该参数表示它们将生成的字符串的长度。

示例代码:

import org.apache.commons.lang.RandomStringUtils;public class RandomStringGenerator {    public static void main(String[] args) {        // generate a random string of 10 alphabets        String randomString = RandomStringUtils.randomAlphabetic(10);        System.out.println("Random string of 10 alphabets: " + randomString);        randomString = RandomStringUtils.randomNumeric(10);        System.out.println("Random string of 10 numbers: " + randomString);        randomString = RandomStringUtils.randomAlphanumeric(10);        System.out.println("Random string of 10 alphanumeric characters: " + randomString);   }}

以上程序输出为:

Random string of 10 alphabets: OEfadIYfFmRandom string of 10 numbers: 1639479195Random string of 10 alphanumeric characters: wTQRMXrNY9

该类还有一个方法random,该方法接受一个整数(即要生成的字符串的长度)和一个char数组。生成的随机字符串仅由该数组中的字符组成。

通过根据构建工具添加以下依赖项,可以将Apache Commons Lang包含到您的项目中。

   org.apache.commons   commons-lang3   3.9

来源地址:https://blog.csdn.net/JavaBoy_XZL/article/details/129008018

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯