Search code examples
javafor-loopforeachoperators

What does the colon (:) operator do?


Apparently a colon is used in multiple ways in Java. Would anyone mind explaining what it does?

For instance here:

String cardString = "";
for (PlayingCard c : this.list)  // <--
{
    cardString += c + "\n";
}

How would you write this for-each loop a different way so as to not incorporate the :?


Solution

  • There are several places colon is used in Java code:

    1. Jump-out label (Tutorial):

      label: for (int i = 0; i < x; i++) {
          for (int j = 0; j < i; j++) {
              if (something(i, j)) break label; // jumps out of the i loop
          }
      } 
      // i.e. jumps to here
      
    2. Ternary condition (Tutorial):

      int a = (b < 4)? 7: 8; // if b < 4, set a to 7, else set a to 8
      
    3. For-each loop (Tutorial):

      String[] ss = {"hi", "there"}
      for (String s: ss) {
          print(s); // output "hi" , and "there" on the next iteration
      }
      
    4. Assertion (Guide):

      int a = factorial(b);
      assert a >= 0: "factorial may not be less than 0"; // throws an AssertionError with the message if the condition evaluates to false
      
    5. Case in switch statement (Tutorial):

      switch (type) {
          case WHITESPACE:
          case RETURN:
              break;
          case NUMBER:
              print("got number: " + value);
              break;
          default:
              print("syntax error");
      }
      
    6. Method references (Tutorial)

      class Person {
         public static int compareByAge(Person a, Person b) {
             return a.birthday.compareTo(b.birthday);
         }}
      }
      
      Arrays.sort(persons, Person::compareByAge);