Developer Tools for Random Data Generation // v2.6.1
root@generate-random:~/phone-numbers/java$ _

Generate Random Phone Numbers in Java

Complete code tutorial with examples and best practices

[ Code Example - Quick Summary ]

Language: Java

What: Generate random phone numbers in Java using Random and JavaFaker library. Covers US format, international format, and validation for testing.

Try it: Use our interactive Phone-numbers generator or integrate this code into your Java application.

Generate random phone numbers in Java using Random and JavaFaker library. Covers US format, international format, and validation for testing. Looking for other languages? Check our code examples in PHP , JavaScript , Python , C# , C++ , Ruby and Go or use our interactive web generator.

Java Code Example

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.regex.Pattern;

public class PhoneNumberGenerator {
    private static final Random random = new Random();

    // Generate random US phone number (xxx) xxx-xxxx
    public static String randomUsPhoneNumber() {
        int areaCode = random.nextInt(800) + 200;
        int exchange = random.nextInt(800) + 200;
        int lineNumber = random.nextInt(9000) + 1000;
        return String.format("(%03d) %03d-%04d", areaCode, exchange, lineNumber);
    }

    // Generate random phone number with country code
    public static String randomInternationalPhone(String countryCode) {
        int areaCode = random.nextInt(800) + 200;
        int exchange = random.nextInt(800) + 200;
        int lineNumber = random.nextInt(9000) + 1000;
        return String.format("%s (%03d) %03d-%04d", countryCode, areaCode, exchange, lineNumber);
    }

    // Generate phone number without formatting
    public static String randomPhoneDigits(int length) {
        StringBuilder phone = new StringBuilder();
        for (int i = 0; i < length; i++) {
            phone.append(random.nextInt(10));
        }
        return phone.toString();
    }

    // Validate US phone number format
    public static boolean isValidUsPhone(String phone) {
        return Pattern.matches("^\(\d{3}\) \d{3}-\d{4}$", phone);
    }

    // Generate multiple phone numbers
    public static List<String> generatePhoneNumbers(int count) {
        List<String> phones = new ArrayList<>();
        for (int i = 0; i < count; i++) {
            phones.add(randomUsPhoneNumber());
        }
        return phones;
    }

    // Using JavaFaker library (Maven: com.github.javafaker:javafaker:1.0.2)
    // import com.github.javafaker.Faker;
    // Faker faker = new Faker();
    // String phone = faker.phoneNumber().phoneNumber(); // (555) 123-4567
    // String cellPhone = faker.phoneNumber().cellPhone(); // 555-123-4567

    public static void main(String[] args) {
        System.out.println("US Phone: " + randomUsPhoneNumber());
        System.out.println("International: " + randomInternationalPhone("+44"));
        System.out.println("Digits only: " + randomPhoneDigits(10));
        System.out.println("Valid: " + isValidUsPhone("(555) 123-4567"));
        System.out.println("Batch: " + String.join(", ", generatePhoneNumbers(3)));
    }
}

[EXPLANATION]

Java uses Random.nextInt() for generating area codes (200-999), exchanges (200-999), and line numbers (1000-9999). String.format("%03d") formats with leading zeros. Pattern.matches() validates regex patterns. StringBuilder efficiently builds digit-only strings. JavaFaker library offers phoneNumber().phoneNumber() for various formats and cellPhone() for mobile numbers. ArrayList stores batch results.

Expected Output

US Phone: (555) 234-5678
International: +44 (555) 234-5678
Digits only: 5551234567
Valid: true
Batch: (234) 567-8901, (345) 678-9012, (456) 789-0123

Common Use Cases

  • Generate phone numbers for Spring Boot user registration testing
  • Create contact data for JPA/Hibernate entity testing
  • Populate test databases with phone number data
  • Test phone validation in enterprise Java applications
  • Generate mock data for SMS gateway integration

Important Notes

  • String.format("%03d") formats as 3-digit with zero-padding
  • JavaFaker integrates with JUnit and TestNG for testing frameworks
  • StringBuilder is more efficient than string concatenation in loops
  • Pattern.matches() compiles regex each call; cache Pattern for reuse
  • JavaFaker supports locales: new Faker(Locale.US)

Try Our Interactive Generator

Don't want to write code? Use our free web-based Phone-numbers generator with instant results.

TRY PHONE-NUMBERS GENERATOR →