title: Why can a Java static method call a constructor, but not refer to this?
body: <p><em>My Assumptions</em>:</p>
  <ol>
  <li>Static method cannot cannot call non-static methods.</li>
  <li>Constructors are kind of a <strong>method</strong> with no return type.</li>
  </ol>
  <p>Given this example...</p>
  <pre><code>    public class Main {
          public static void main(String[] args) {
              Main p = new Main();  // constructor call
              k();  // [implicit] `this` reference
          }
  
          protected Main() {
              System.out.print(&quot;1234&quot;);
          }
  
          protected void k() {
          }
      }
  </code></pre>
  <ul>
  <li>this line prints 1234: <code>Main p = new Main()</code></li>
  <li>this line throws an Exception: <code>k()</code></li>
  </ul>
  <p><em>Why did the example code do those two things? Don't they conflict with my above Assumptions?  Are my Assumptions correct?</em></p>