title: !flag has two meanings in java?
body: <pre><code>boolean flag = false;
  if(!flag) System.out.println(!flag); // prints true
  </code></pre>
  
  <p>I wonder why <code>!flag</code> being considered as <code>false</code> when it's a conditional parameter passed to <code>if statement</code> and as <code>true</code> elsewhere?</p>