O que significa : em um for

Bom dia, eu estava estudando e me deparei com esse código:
for (int numero : numeros){
soma+=numero;
}
eu sei o significado de ? e : , porém não consigo compreender muito bem o que os dois pontos significa em um for.

É a sintaxe do enhanced for, basicamente isso:

for (TipoDeDado elementoAtual : objetoIterable) {
    // Corpo do laço
}

Equivale à isso:

for (int i = 0; i < array.length;  i++) {
    TipoDeDado elementoAtual = array[i];
    // Corpo do laço
}

Ou isso:

for (int i = 0; i < list.size();  i++) {
    TipoDeDado elementoAtual = list.get(i);
    // Corpo do laço
}

Muito o brigado staroski!