Sudoku algorithm with unfamiliar java syntax
<p>I was looking through a Sudoku solving algorithm when I came across a line with some syntax I haven't seen before.</p>

<p>The line I'm confused about is </p>

<pre><code>    System.out.print(solution[i][j] == 0 ? " " : Integer.toString(solution[i][j]));
</code></pre>

<p>I do not understand what the question mark means or anything after the question mark.
This line is part of the method </p>

<pre><code>    static void writeMatrix(int[][] solution) {
    for (int i = 0; i &lt; 9; ++i) {
        if (i % 3 == 0)
            System.out.println(" -----------------------");
        for (int j = 0; j &lt; 9; ++j) {
            if (j % 3 == 0)
                System.out.print("| ");
            System.out.print(solution[i][j] == 0 ? " " : Integer.toString(solution[i][j]));

            System.out.print(' ');
        }
        System.out.println("|");
    }
    System.out.println(" -----------------------");
}
</code></pre>

<p>I got this code from <a href="http://www.colloquial.com/games/sudoku/java_sudoku.html" rel="nofollow">http://www.colloquial.com/games/sudoku/java_sudoku.html</a>. Any explanations would be appreciated!</p>
