Delayed Assignment

The declaration of a variable and the assignment of its initial value can be done separately.

void main() {
    String contestWinner;
    contestWinner = "Boaty McBoatface";

    System.out.println(contestWinner);
}

In which case the "variable declaration" will only have the "type" and "name" components.

   String contestWinner;
//  type  name

And the "initial assignment" will look identical to a "re-assignment".

   contestWinner = "Boaty McBoatface";
//   name            initial value

Before an initial value is assigned to a variable, it is not allowed to be used.1

void main() {
    String contestWinner;
    // This will not run, since Java knows that
    // you never gave contestWinner an initial value.
    System.out.println(contestWinner);
}
1

There is no direct use for separating declaration and initial assignment at this point, but it's a surprise tool that will help us later.