No hay un operador de "dos puntos", pero los dos puntos aparecen en dos lugares:
1: En el operador ternario, por ejemplo:
int x = bigInt ? 10000 : 50;
En este caso, el operador ternario actúa como un "si" para las expresiones. Si bigInt es verdadero, entonces x se le asignará 10000. Si no, 50. Los dos puntos aquí significan "más".
2: en un bucle para cada uno:
double[] vals = new double[100];
for (double x : vals) {
}
Esto establece xa cada uno de los valores en 'vals' a su vez. Entonces, si vals contiene [10, 20.3, 30, ...], entonces x será 10 en la primera iteración, 20.3 en la segunda, etc.
Nota: digo que no es un operador porque es solo sintaxis. No puede aparecer en ninguna expresión dada por sí solo, y es solo una casualidad que tanto el operador for-each como el ternario usen dos puntos.