Generate Random String in Java. Different ways.

In this Java tutorial I am going to share with you a different ways of how to generate a random String of characters. You will learn to generate the following types of random Strings of characters:

  • alpha-numeric String of characters of any length or of a specific length,
  • Letters only,
  • Numbers only.

I hope you will find this tutorial useful.

Using UUID

One of the easiest and quickest ways to generate a random alpha-numeric String of characters is probably to use the UUID which stands for a Universal Unique Identifier and is a 128-bit number used to uniquely identify some object or entity on the Internet.

The String is generated using a cryptographically strong pseudo random number generator. For this code to work you do not need to add to your project any external third-party libraries.

Here is a complete example you can copy and run on your computer.

import java.util.UUID;
 
public class UUIDExample {
    public static void main(String[] args)
    {
        String uuid = UUID.randomUUID().toString();
        System.out.println(uuid);
    }
}

The output is 36 characters long: 5d87ab34-f9c1-4424-851c-58c9eddf21ff

You can also remove the dashes from the resulting String the following way:

import java.util.UUID;
 
public class UUIDExample {
    public static void main(String[] args)
    {
        String uuid = UUID.randomUUID().toString();
        System.out.println(uuid + " of length " + uuid.length());
        
        // Remove dashes 
        String uuid2 = uuid.replaceAll("-", "");
        System.out.println(uuid2);
    }
}

The output is 32 characters long: 5d87ab34f9c14424851c58c9eddf21ff

Random String of Any Length

The below example generates a random alpha-numeric String of characters of a specific length. You can use it to generate random String of characters of any length you need. For this code to work you do not need to add to your project any external third-party libraries.

public class RandomStringExample {
    
    private final Random RANDOM = new SecureRandom();
    private final String ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";


    public static void main(String[] args) {

        RandomStringExample randomStringExample = new RandomStringExample();
        String randomString = randomStringExample.generateRandomString(30);
        
        System.out.println(randomString);
    }

    private String generateRandomString(int length) {
        StringBuilder returnValue = new StringBuilder(length);

        for (int i = 0; i < length; i++) {
            returnValue.append(ALPHABET.charAt(RANDOM.nextInt(ALPHABET.length())));
        }

        return new String(returnValue);
    }
}

The output is 30 characters long but it could be 130 characters long: niq4ZtRZdN7rfSu81dyqy0oYhq7mmc

Random String of Any Length with Apache Commons

The below code examples uses Apache Commons Lang library to generate a random alpha-numeric String of characters. The advantage of this approach is that you can generate different types of random Strings:

  • Generate Random String of any length,
  • Alpha-numeric String,
  • String of letters only,
  • String of numbers only.

Which is pretty cool.

package codeexamples;

import org.apache.commons.lang3.RandomStringUtils;

 
public class RandomStringWithApache {

    public static void main(String[] args) {
        int length = 30;
        boolean includeLetters = true;
        boolean includeNumbers = true;
       
        String randomString = RandomStringUtils.random(length, includeLetters, includeNumbers);

        System.out.println(randomString);
    }
}

If you are interested in learning more about Java and like learning by watching a series of step by step video tutorials, then have a look at the below list of online video courses that teach Java.

You will also find a lot of free video tutorials on this site. For example check out this section with Spring Boot video tutorials for beginners.


Leave a Reply

Your email address will not be published. Required fields are marked *