title: Overloading of Math.sqrt : overloading method seems to hide the original one
body: <p>trying to overload the <code>java.lang.Math.sqrt</code> static method for <code>int</code> type :</p>
  
  <pre><code>import static java.lang.Math.sqrt;
  
  class Test
  {
      private static double sqrt(int n)
      {
          return sqrt(1.0 * n);
      }
  
      public static void main(String[] args)
      {
          System.out.println(sqrt(1));
      }
  }
  </code></pre>
  
  <p>an odd error arises :</p>
  
  <pre><code>Test.java:7: sqrt(int) in Test cannot be applied to (double)
                  return sqrt(1.0 * n);
                         ^
  1 error
  </code></pre>
  
  <p>But when explicitly referencing the <code>java.lang.Math.sqrt</code> method all is going fine :</p>
  
  <pre><code>class Test
  {
      private static double sqrt(int n)
      {
          return Math.sqrt(1.0 * n);
      }
  
      public static void main(String[] args)
      {
          System.out.println(sqrt(1));
      }
  }
  </code></pre>
  
  <p>The compiler used is the standard <strong>javac</strong>, version <strong>1.6.0_16</strong>.</p>
  
  <p>So the questions are :</p>
  
  <ol>
  <li>Why is the compiler not able to resolve the overloading in the first case ?</li>
  <li>Where does this behavior is specified in the java language specifications ?</li>
  </ol>
  
  <p>Thanks in advance.</p>