Método Substring

Eu tive que escrever este programa para produzir a primeira letra de um primeiro nome e as primeiras cinco letras do último nome mais um número aleatório de 10-99. Ele funciona, mas eu pensei que o método de substring começa em 0 e vai de lá para que substring (0,0) incluiria apenas a primeira letra e também substring (0,4) incluiria 0 1 2 3 4 letras para os primeiros 5 Ou não inclui o número final na saída?

import java.util.Scanner;
import java.util.Random;

public class NameModifier
{

public static void main (String[] args)
    {

    String namefirst;
    String namelast;
    Random generator = new Random();
    int num;

    num = generator.nextInt(99) + 10;

    Scanner scan = new Scanner (System.in);

    //prompts user
    System.out.print ("Enter your first name: ");
    namefirst = scan.nextLine();    
    System.out.print ("Enter your last name: ");    
    namelast = scan.nextLine();
    System.out.println("Your entered: " + namefirst + " " + namelast);

    //outputs modified username possibility
    System.out.println("Here is a random username for you: ");
    System.out.print (namefirst.substring(0, 1));
    System.out.print (namelast.substring(0,5));
    System.out.print (num);

    scan.close();

    }
}

questionAnswers(2)

yourAnswerToTheQuestion